perm filename RF1144.PS[RFC,NET] blob
sn#882562 filedate 1990-03-03 generic text, type T, neo UTF8
%!PS-Adobe-2.0
%%Title: tcpcomp.dvi
%%Creator: dvi2ps
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%%BeginProcSet: "tex.pro" "(1.21)" ""
%!
/TeXDict 200 dict def TeXDict begin /bdef{bind def}def /@start{72 720
translate}bdef /@startdoc{72 exch div dup neg scale 0 0 transform round exch
round exch itransform translate /@TeXSave save def}def /@letter{/letter where{
pop letter initmatrix}if}def /@note{/note where{pop note initmatrix}if}def
/@legal{/legal where{pop legal initmatrix}if 0 216 translate}def /@landscape{
90 rotate 72 -72 translate}def /@manualfeed{statusdict /manualfeed true put}
def /@copies{/#copies exch def}def /@newfont{/newname exch def newname 7 dict
def newname load begin /FontType 3 def dup neg matrix scale /FontMatrix exch
def /FontBBox[0 0 1 1]def /BitMaps 128 array def /BuildChar{CharBuilder}def
/Encoding 256 array def 0 1 255{Encoding exch /.undef put}for end newname
newname load definefont pop}bdef /ch-image{ch-data 0 get}bdef /ch-width{
ch-data 1 get}bdef /ch-height{ch-data 2 get}bdef /ch-xoff{ch-data 3 get}bdef
/ch-yoff{ch-data 4 get}bdef /ch-tfmw{ch-data 5 get}bdef /CharBuilder{/ch-code
exch def /font-dict exch def /ch-data font-dict /BitMaps get ch-code get def
ch-data null eq not{ch-tfmw 0 ch-xoff neg ch-yoff neg ch-width ch-xoff sub
ch-height ch-yoff sub setcachedevice ch-width ch-height true[1 0 0 1 ch-xoff
ch-yoff]{ch-image}imagemask}if}bdef /@sf{setfont}bdef /@dc{/ch-code exch def
dup 0 get length 2 lt{pop[<00>1 1 0 0 8.00]}if /ch-data exch def currentfont
/BitMaps get ch-code ch-data put currentfont /Encoding get ch-code dup( )
cvs cvn put}bdef /@DRAFTF{gsave newpath /Helvetica-Bold findfont setfont
(Draft)dup stringwidth pop 8.875 exch div dup 72 mul dup scale 52.3 rotate 2.5
exch div -.35 translate 0.95 setgray 0 0 moveto show grestore}bdef /@DRAFTM{
gsave newpath /Helvetica-Bold findfont 72 scalefont setfont 0.95 setgray 576
702 moveto(Draft)stringwidth exch neg exch neg rmoveto(Draft)show grestore}
bdef /@bop0{pop}bdef /@bop1{pop /SaveImage save def}bdef /@draft{/@bop1{1 le{
@DRAFTF}{@DRAFTM}ifelse /SaveImage save def}bdef}bdef /@eop{showpage SaveImage
restore}bdef /@end{end}bdef /p{moveto}bdef /r{0 rmoveto}bdef /s{show}bdef /m{
exch 0 rmoveto show}bdef /c{c-string dup 0 4 -1 roll put show}bdef /c-string
( )def /ru{/dy exch neg def /dx exch def /x currentpoint /y exch def def
newpath x y moveto dx 0 rlineto 0 dy rlineto dx neg 0 rlineto closepath fill x
y moveto}bdef /psf$TeXscale{65536 div}def gsave initgraphics
/DocumentInitState[matrix currentmatrix currentlinewidth currentlinecap
currentlinejoin currentdash currentgray currentmiterlimit]cvx def grestore
/startTexFig{/psf$SavedState save def userdict maxlength dict begin
currentpoint transform DocumentInitState setmiterlimit setgray setdash
setlinejoin setlinecap setlinewidth setmatrix itransform moveto /psf$ury exch
psf$TeXscale def /psf$urx exch psf$TeXscale def /psf$lly exch psf$TeXscale def
/psf$llx exch psf$TeXscale def /psf$y exch psf$TeXscale def /psf$x exch
psf$TeXscale def currentpoint /psf$cy exch def /psf$cx exch def /psf$sx psf$x
psf$urx psf$llx sub div def /psf$sy psf$y psf$ury psf$lly sub div def psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
translate /DefFigCTM matrix currentmatrix def /initmatrix{DefFigCTM setmatrix}
def /defaultmatrix{DefFigCTM exch copy}def /initgraphics{DocumentInitState
setmiterlimit setgray setdash setlinejoin setlinecap setlinewidth setmatrix
DefFigCTM setmatrix}def /showpage{initgraphics}def /erasepage{initgraphics}
def /copypage{initgraphics}def}bdef /doclip{llx lly urx ury currentpoint 6 2
roll newpath 4 copy 4 2 roll moveto 6 -1 roll exch lineto exch lineto exch
lineto closepath clip newpath moveto}bdef /endTexFig{end psf$SavedState
restore}def /ReEncodeForTeX{/newfontname exch def /basefontname exch def
/TeXstr 30 string def /basefontdict basefontname findfont def /newfont
basefontdict maxlength dict def basefontdict{exch dup /FID ne{dup /Encoding eq
{exch dup length array copy newfont 3 1 roll put}{exch newfont 3 1 roll put}
ifelse}{pop pop}ifelse}forall basefontdict /MathFontName known not{/TeXvec
basefontname TeXstr cvs(Courier)search{pop pop pop TeXcourvec}{pop
TeXnormalvec}ifelse def TeXvec aload pop TeXvec length 2 idiv{newfont
/Encoding get 3 1 roll put}repeat}if newfontname newfont definefont pop}bdef
/TeXnormalvec[8#014 /fi 8#015 /fl 8#020 /dotlessi 8#022 /grave 8#023 /acute
8#024 /caron 8#025 /breve 8#026 /macron 8#027 /ring 8#030 /cedilla 8#031
/germandbls 8#032 /ae 8#033 /oe 8#034 /oslash 8#035 /AE 8#036 /OE 8#037
/Oslash 8#042 /quotedblright 8#074 /exclamdown 8#076 /questiondown 8#134
/quotedblleft 8#136 /circumflex 8#137 /dotaccent 8#173 /endash 8#174 /emdash
8#175 /hungarumlat 8#176 /tilde 8#177 /dieresis]def /TeXcourvec[8#016
/exclamdown 8#017 /questiondown 8#020 /dotlessi 8#022 /grave 8#023 /acute
8#024 /caron 8#025 /breve 8#026 /macron 8#027 /ring 8#030 /cedilla 8#031
/germandbls 8#032 /ae 8#033 /oe 8#034 /oslash 8#035 /AE 8#036 /OE 8#037
/Oslash 8#074 /less 8#076 /greater 8#134 /backslash 8#136 /circumflex 8#137
/underscore 8#173 /braceleft 8#174 /bar 8#175 /braceright 8#177 /dieresis]def
/TeXPSmakefont{/TeXsize exch def findfont[TeXsize 0 0 TeXsize neg 0 0]
makefont}bdef /ObliqueFont{/ObliqueAngle exch def /ObliqueBaseName exch def
/ObliqueFontName exch def /ObliqueTransform[1 0 ObliqueAngle sin ObliqueAngle
cos div 1 0 0]def /basefontdict ObliqueBaseName findfont ObliqueTransform
makefont def /newfont basefontdict maxlength dict def basefontdict{exch dup
/FID ne{dup /Encoding eq{exch dup length array copy newfont 3 1 roll put}{
exch newfont 3 1 roll put}ifelse}{pop pop}ifelse}forall newfont /FontName
ObliqueFontName put ObliqueFontName newfont definefont pop}bdef /SmallCapsFont
{/SmallCapsBaseName exch def /SmallCapsFontName exch def /basefontdict
SmallCapsBaseName findfont def /newfont basefontdict maxlength 10 add dict def
newfont begin /FontName SmallCapsFontName def /FontBaseDict basefontdict 1000
scalefont def /FontSCDict FontBaseDict .8 scalefont def /FontType 3 def
/BuildChar{SmallCapChar}def /FontMatrix dup basefontdict exch get def
/FontBBox dup basefontdict exch get def /Encoding dup basefontdict exch get
def end SmallCapsFontName newfont definefont pop}bdef /SmallCapChar{/achar(A)
def achar exch 0 exch put begin achar 0 get dup 97 ge exch 122 le and{achar 0
achar 0 get 32 sub put FontSCDict}{FontBaseDict}ifelse setfont achar
stringwidth FontBBox setcachedevice newpath 0 0 moveto achar show end}bdef
/MathEncodingVec[/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon1 /Phi
/Psi /Omega /alpha /beta /gamma /delta /epsilon /zeta /nu /theta /iota /kappa
/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi /omega
/epsilon /theta1 /omega1 /rho /sigma /phi1 /arrowleft /arrowleft /arrowright
/arrowright /suchthat /congruent /proportional /angle /zero /one /two /three
/four /five /six /seven /eight /nine /period /comma /less /slash /greater
/asteriskmath /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q
/R /S /T /U /V /W /X /Y /Z /registerserif /copyrightserif /trademarkserif
/logicalor /logicaland /section /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
/p /q /r /s /t /u /v /w /x /y /z /dotlessi /j /weierstrass /macron /breve]def
/MathCharVec[71 68 81 76 88 80 83 161 70 89 87 97 98 103 100 101 122 110 113
105 107 108 109 110 120 112 114 115 116 117 102 99 121 119 101 74 118 114 115
106 172 172 174 174 39 64 181 208 48 49 50 51 52 53 54 55 56 57 46 44 60 47 62
42 182 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
89 90 210 211 212 218 217 167 97 98 99 100 101 102 103 104 105 106 107 108 109
110 111 112 113 114 115 116 117 118 119 120 121 122 245 106 195 197 198]def
/MathDictVec[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0]def /MathOblique{3 copy ObliqueFont pop pop
MathFont}bdef /MathFont{/MathSymName exch def /MathBaseName exch def
/MathFontName exch def /basefontdict MathBaseName findfont def /newfont
basefontdict maxlength 10 add dict def newfont begin /FontName MathFontName
def /FontDictArray[basefontdict 1000 scalefont MathSymName findfont 950
scalefont /Symbol findfont 950 scalefont]def /FontType 3 def /BuildChar{
MathFontChar}def /FontMatrix dup basefontdict exch get def /FontBBox dup
basefontdict exch get def /Encoding dup basefontdict exch get dup length array
copy def /WhichFont MathDictVec def /WhichChar MathCharVec def MathEncodingVec
Encoding copy pop /achar(A)def end MathFontName newfont definefont pop}bdef
/MathFontChar{exch begin achar exch 0 exch put FontDictArray WhichFont achar 0
get get get setfont achar dup 0 get WhichChar exch get 0 exch put achar
stringwidth FontBBox setcachedevice newpath 0 0 moveto achar show end}bdef
/@flushfonts{@TeXSave restore /@TeXSave save def}bdef end
%%EndProcSet
%%EndProlog
TeXDict begin @start
300 @startdoc
%%Page: 0 1
save
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
1 /cmsy8.300 @newfont
cmsy8.300 @sf
[<04000400040004000E000E000E000E000E000E000E000E000E000E000E000E000E00040075C0FF
E075C0040004000E000E000E000E000E000400> 16 29 -2 6 15.682] 121 @dc
/Times-Bold /t-bol.510 ReEncodeForTeX /t-bol.510 /t-bol.510 70.833209 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
1 /cmsy6.300 @newfont
cmsy6.300 @sf
[<181818181818181818181818181818FFFF1818181818> 8 22 -3 5 14.298] 121 @dc
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
0 @bop1
t-rom.330 @sf 150 45 p (Network)s
11 r 87 c
-2(orking)m
10(Group)m
948 r 86 c
-4 r 46 c
10(Jacobson)m
cmsy8.300 @sf 1779 28 p 121 c
t-rom.330 @sf 150 101 p (Request)s
11(for)m
12(Comments:)m
17 r 49 c
-1(144)m
1020(LBL)m
1531 158 p (February)s
12(1990)m
t-bol.510 @sf 517 997 p (Compr)s
(essing)s
17(TCP/IP)m
17(Headers)m
559 1105 p (for)s
18(Low-Speed)m
17(Serial)m
18(Links)m
t-bol.330 @sf 150 1965 p (Status)s
11(of)m
12(this)m
11(Memo)m
t-rom.330 @sf 150 2048 p (This)s
12(RFC)m
13(is)m
12 r 97 c
12(proposed)m
13(elective)m
12(protocol)m
12(for)m
13(the)m
12(Internet)m
13(community)m
12(and)m
12(requests)m
13(discus-)m
150 2104 p (sion)s
12(and)m
11(suggestions)m
12(for)m
12(improvement.)m
18(It)m
11(describes)m
12 r 97 c
12(method)m
12(for)m
11(compressing)m
12(the)m
12(headers)m
150 2161 p (of)s
15(TCP/IP)m
16(datagrams)m
15(to)m
15(improve)m
16(performance)m
15(over)m
15(low)m
16(speed)m
15(serial)m
15(links.)m
29(The)m
16(motiva-)m
150 2217 p (tion,)s
14(implementation)m
14(and)m
13(performance)m
14(of)m
13(the)m
14(method)m
13(are)m
14(described.)m
23 r 67 c
14(code)m
13(for)m
14 r 97 c
13(sample)m
150 2274 p (implementation)s
11(is)m
12(given)m
11(for)m
12(reference.)m
17(Distribution)m
11(of)m
12(this)m
11(memo)m
12(is)m
11(unlimited.)m
150 2464 p 660 2 ru
cmsy6.300 @sf 198 2501 p 121 c
t-rom.270 @sf 217 2516 p (This)s
12(work)m
12(was)m
12(supported)m
12(in)m
12(part)m
11(by)m
12(the)m
12(U.S.)m
12(Department)m
12(of)m
11(Ener)m
(gy)s
12(under)m
11(Contract)m
12(Number)m
12(DE-AC03-)m
150 2562 p (76SF00098.)s
@eop
restore
%%Page: 1 2
save
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<70F8F8F870> 8 5 -4 0 12.626] 58 @dc
1 @bop1
t-bol.420 @sf 150 85 p (Contents)s
t-bol.330 @sf 150 195 p 49 c
46(Intr)m
(oduction)s
1309 r 49 c
150 303 p 50 c
46(The)m
11(pr)m
(oblem)s
1305 r 49 c
150 411 p 51 c
46(The)m
11(compr)m
(ession)s
11(algorithm)m
1022 r 52 c
t-rom.330 @sf 219 473 p (3.1)s
48(The)m
11(basic)m
12(idea)m
cmmi10.329 @sf 32 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 83 r 52 c
219 536 p (3.2)s
48(The)m
11(ugly)m
12(details)m
cmmi10.329 @sf 37 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 83 r 54 c
324 598 p (3.2.1)s
55(Overview)m
cmmi10.329 @sf 40 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 83 r 54 c
324 660 p (3.2.2)s
55(Compressed)m
12(packet)m
11(format)m
cmmi10.329 @sf 12 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 83 r 55 c
324 723 p (3.2.3)s
55(Compressor)m
12(processing)m
cmmi10.329 @sf 39 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
t-rom.330 @sf 83 r 57 c
324 785 p (3.2.4)s
55(Decompressor)m
12(processing)m
cmmi10.329 @sf 31 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(12)m
t-bol.330 @sf 150 893 p 52 c
46(Err)m
(or)s
10(handling)m
1237(15)m
t-rom.330 @sf 219 955 p (4.1)s
48(Error)m
11(detection)m
cmmi10.329 @sf 21 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(15)m
219 1018 p (4.2)s
48(Error)m
11(recovery)m
cmmi10.329 @sf 29 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
t-rom.330 @sf 60(16)m
t-bol.330 @sf 150 1126 p 53 c
46(Con\014gurable)m
11(parameters)m
12(and)m
11(tuning)m
819(19)m
t-rom.330 @sf 219 1188 p (5.1)s
48(Compression)m
11(con\014guration)m
cmmi10.329 @sf 47 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
t-rom.330 @sf 60(19)m
219 1250 p (5.2)s
48(Choosing)m
11 r 97 c
12(maximum)m
11(transmission)m
12(unit)m
cmmi10.329 @sf 25 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(20)m
219 1313 p (5.3)s
48(Interaction)m
11(with)m
12(data)m
11(compression)m
cmmi10.329 @sf 28 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(21)m
t-bol.330 @sf 150 1421 p 54 c
46(Performance)m
11(measur)m
(ements)s
987(25)m
150 1529 p 55 c
46(Acknowlegements)m
1181(26)m
150 1637 p 65 c
36(Sample)m
11(Implementation)m
1066(28)m
t-rom.330 @sf 219 1700 p (A.1)s
38(De\014nitions)m
11(and)m
12(State)m
11(Data)m
cmmi10.329 @sf 26 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(29)m
219 1762 p (A.2)s
38(Compression)m
cmmi10.329 @sf 19 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(31)m
219 1824 p (A.3)s
38(Decompression)m
cmmi10.329 @sf 11 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
t-rom.330 @sf 60(36)m
219 1887 p (A.4)s
38(Initialization)m
cmmi10.329 @sf 27 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
t-rom.330 @sf 60(39)m
219 1949 p (A.5)s
38(Berkeley)m
11(Unix)m
12(dependencies)m
cmmi10.329 @sf 17 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(39)m
t-bol.330 @sf 150 2057 p 66 c
38(Compatibility)m
12(with)m
11(past)m
12(mistakes)m
889(41)m
t-rom.330 @sf 219 2119 p (B.1)s
40(Living)m
12(without)m
11 r 97 c
12(framing)m
11(`type')m
12(byte)m
cmmi10.329 @sf 12 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
t-rom.330 @sf 60(41)m
219 2182 p (B.2)s
40(Backwards)m
12(compatible)m
11(SLIP)m
12(servers)m
cmmi10.329 @sf 20 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
23 r 58 c
23 r 58 c
23 r 58 c
22 r 58 c
t-rom.330 @sf 60(41)m
t-bol.330 @sf 150 2290 p 67 c
36(Mor)m
101 c
10(aggr)m
(essive)s
11(compr)m
(ession)s
962(42)m
150 2398 p 68 c
36(Security)m
11(Considerations)m
1066(43)m
150 2506 p 69 c
38(Author)m
1 r 39 c
-1 r 115 c
11(addr)m
(ess)s
1199(43)m
t-rom.330 @sf 969 2724 p 105 c
@eop
restore
%%Page: 1 3
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<C00000E00000E0000070000070000070000070000038000038000039F0783F08C41E05C41E03C2
1E01C21E01C20E00E10E00E00E00E00E00E0070070070070070070070070038038038038038038
03803801C01C018018> 24 29 -1 9 27.388] 22 @dc
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<80003E0080007F808000FFC08001C1E0C0078060C00F0030601E0030783800103FF000101FE000
1007C00010> 32 11 -3 -6 35.353] 24 @dc
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.420 @sf 150 233 p 49 c
58(Intr)m
(oduction)s
t-rom.330 @sf 150 340 p (As)s
13(increasingly)m
13(powerful)m
13(computers)m
13(\014nd)m
13(their)m
13(way)m
13(into)m
13(people')m
-1 r 115 c
12(homes,)m
13(there)m
13(is)m
13(growing)m
150 396 p (interest)s
14(in)m
13(extending)m
14(Internet)m
14(connectivity)m
14(to)m
13(those)m
14(computers.)m
24(Unfortunately)m
-2 r 44 c
14(this)m
13(exten-)m
150 453 p (sion)s
14(exposes)m
13(some)m
14(complex)m
13(problems)m
14(in)m
13(link-level)m
14(framing,)m
14(address)m
13(assignment,)m
14(routing,)m
150 509 p (authentication)s
13(and)m
12(performance.)m
21(As)m
13(of)m
13(this)m
13(writing)m
12(there)m
13(is)m
13(active)m
12(work)m
13(in)m
13(all)m
13(these)m
12(areas.)m
150 565 p (This)s
14(memo)m
15(describes)m
14 r 97 c
14(method)m
15(that)m
14(has)m
14(been)m
15(used)m
14(to)m
14(improve)m
14(TCP/IP)m
15(performance)m
14(over)m
150 622 p (low)s
11(speed)m
12(\(300)m
11(to)m
12(19,200)m
11(bps\))m
12(serial)m
11(links.)m
221 682 p (The)s
9(compression)m
9(proposed)m
10(here)m
9(is)m
9(similar)m
10(in)m
9(spirit)m
9(to)m
10(the)m
t-ita.330 @sf 9(Thinwir)m
-1(e-II)m
t-rom.330 @sf 9(protocol)m
9(described)m
150 738 p (in)s
8 r 91 c
53 c
(].)s
16(However)m
44 c
8(this)m
8(protocol)m
8(compresses)m
9(more)m
8(ef)m
(fectively)s
7(\(the)m
9(average)m
8(compressed)m
8(header)m
150 795 p (is)s
15 r 51 c
15(bytes)m
15(compared)m
15(to)m
15(13)m
15(in)m
15(Thinwire-II\))m
15(and)m
15(is)m
15(both)m
15(ef)m
(\014cient)s
14(and)m
15(simple)m
15(to)m
15(implement)m
150 851 p (\(the)s
17(Unix)m
17(implementation)m
17(is)m
17(250)m
17(lines)m
17(of)m
17 r 67 c
17(and)m
17(requires,)m
18(on)m
17(the)m
17(average,)m
19(90)m
cmmi10.329 @sf 3 r 22 c
t-rom.330 @sf 3 r 115 c
17 r 40 c
cmsy10.329 @sf 3 r 24 c
t-rom.330 @sf 3(170)m
150 908 p (instructions\))s
11(for)m
12 r 97 c
11(20MHz)m
12(MC68020)m
11(to)m
12(compress)m
11(or)m
12(decompress)m
11 r 97 c
12(packet\).)m
221 967 p (This)s
17(compression)m
18(is)m
17(speci\014c)m
18(to)m
17(TCP/IP)m
18(datagrams.)m
t-rom.240 @sf 1186 951 p 49 c
t-rom.330 @sf 1243 967 p (The)s
18(author)m
17(investigated)m
18(com-)m
150 1024 p (pressing)s
11(UDP/IP)m
11(datagrams)m
11(but)m
11(found)m
12(that)m
11(they)m
11(were)m
11(too)m
11(infrequent)m
11(to)m
11(be)m
11(worth)m
11(the)m
12(bother)m
150 1080 p (and)s
16(either)m
15(there)m
16(was)m
16(insuf)m
(\014cient)s
15(datagram-to-datagram)m
15(coherence)m
16(for)m
16(good)m
15(compression)m
150 1137 p (\(e.g.,)s
15(name)m
14(server)m
15(queries\))m
14(or)m
15(the)m
14(higher)m
14(level)m
15(protocol)m
14(headers)m
14(overwhelmed)m
15(the)m
14(cost)m
15(of)m
150 1193 p (the)s
16(UDP/IP)m
16(header)m
16(\(e.g.,)m
17(Sun')m
-1 r 115 c
15(RPC/NFS\).)m
16(Separately)m
16(compressing)m
16(the)m
16(IP)m
16(and)m
16(the)m
16(TCP)m
150 1250 p (portions)s
13(of)m
14(the)m
13(datagram)m
13(was)m
14(also)m
13(investigated)m
13(but)m
14(rejected)m
13(since)m
13(it)m
14(increased)m
13(the)m
14(average)m
150 1306 p (compressed)s
16(header)m
17(size)m
16(by)m
17(50%)m
16(and)m
17(doubled)m
16(the)m
17(compression)m
16(and)m
17(decompression)m
16(code)m
150 1363 p (size.)s
t-bol.420 @sf 150 1510 p 50 c
58(The)m
15(pr)m
(oblem)s
t-rom.330 @sf 150 1617 p (Internet)s
17(services)m
17(one)m
16(might)m
17(wish)m
17(to)m
17(access)m
17(over)m
17 r 97 c
16(serial)m
17(IP)m
17(link)m
17(from)m
17(home)m
17(range)m
16(from)m
150 1674 p (interactive)s
16(\\terminal")m
17(type)m
16(connections)m
16(\(e.g.,)m
17(telnet,)m
18(rlogin,)m
17(xterm\))m
17(to)m
16(bulk)m
16(data)m
16(transfer)m
150 1730 p (\(e.g.,)s
14(ftp,)m
13(smtp,)m
14(nntp\).)m
22(Header)m
13(compression)m
13(is)m
13(motivated)m
13(by)m
14(the)m
13(need)m
13(for)m
13(good)m
13(interactive)m
150 1787 p (response.)s
24(I.e.,)m
14(the)m
t-ita.330 @sf 13(line)m
14(ef\014ciency)m
t-rom.330 @sf 14(of)m
13 r 97 c
14(protocol)m
13(is)m
14(the)m
14(ratio)m
13(of)m
14(the)m
13(data)m
14(to)m
14(header+data)m
13(in)m
14 r 97 c
150 1843 p (datagram.)s
17(If)m
11(ef)m
(\014cient)s
11(bulk)m
11(data)m
11(transfer)m
11(is)m
12(the)m
11(only)m
11(objective,)m
11(it)m
12(is)m
11(always)m
11(possible)m
11(to)m
11(make)m
150 1900 p (the)s
11(datagram)m
12(lar)m
(ge)s
11(enough)m
11(to)m
11(approach)m
12(an)m
11(ef)m
(\014ciency)s
11(of)m
11(100%.)m
221 1959 p (Human-factors)s
13(studies[)m
(15)s
93 c
13(have)m
13(found)m
13(that)m
13(interactive)m
13(response)m
13(is)m
13(perceived)m
13(as)m
14(\\bad")m
150 2016 p (when)s
7(low-level)m
8(feedback)m
7(\(character)m
7(echo\))m
8(takes)m
7(longer)m
7(than)m
8(100)m
7(to)m
7(200)m
7(ms.)m
16(Protocol)m
8(headers)m
150 2072 p (interact)s
11(with)m
12(this)m
11(threshold)m
12(three)m
11(ways:)m
187 2167 p (\(1\))s
23(If)m
11(the)m
10(line)m
10(is)m
10(too)m
11(slow)m
-2 r 44 c
9(it)m
11(may)m
10(be)m
10(impossible)m
11(to)m
10(\014t)m
10(both)m
11(the)m
10(headers)m
10(and)m
11(data)m
10(into)m
10 r 97 c
10(200)m
264 2224 p (ms)s
12(window:)m
18(One)m
13(typed)m
12(character)m
12(results)m
12(in)m
12 r 97 c
12(41)m
13(byte)m
12(TCP/IP)m
12(packet)m
12(being)m
12(sent)m
12(and)m
264 2280 p 97 c
13(41)m
14(byte)m
14(echo)m
13(being)m
14(received.)m
24(The)m
14(line)m
13(speed)m
14(must)m
14(be)m
13(at)m
14(least)m
14(4000)m
13(bps)m
14(to)m
14(handle)m
264 2336 p (these)s
11(82)m
12(bytes)m
11(in)m
11(200)m
12(ms.)m
150 2373 p 660 2 ru
t-rom.180 @sf 200 2409 p 49 c
t-rom.270 @sf 217 2425 p (The)s
11(tie)m
10(to)m
10(TCP)m
10(is)m
10(deeper)m
10(than)m
10(might)m
10(be)m
10(obvious.)m
17(In)m
10(addition)m
10(to)m
10(the)m
10(compression)m
10(\\knowing")m
10(the)m
10(format)m
10(of)m
150 2471 p (TCP)s
7(and)m
8(IP)m
7(headers,)m
8(certain)m
7(features)m
8(of)m
7(TCP)m
7(have)m
8(been)m
7(used)m
8(to)m
7(simplify)m
7(the)m
8(compression)m
7(protocol.)m
14(In)m
7(particular)m
-1 r 44 c
150 2516 p (TCP')s
-1 r 115 c
9(reliable)m
11(delivery)m
10(and)m
10(the)m
10(byte-stream)m
11(conversation)m
10(model)m
10(have)m
11(been)m
10(used)m
10(to)m
11(eliminate)m
10(the)m
10(need)m
11(for)m
10(any)m
150 2562 p (kind)s
9(of)m
10(error)m
9(correction)m
9(dialog)m
10(in)m
9(the)m
10(protocol)m
9(\(see)m
9(sec.)m
10(4\).)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(1])m
@eop
restore
%%Page: 2 4
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<000001C00000078000001E00000078000001E00000078000000E0000003C000000F0000003C000
000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000E
0000000780000001E0000000780000001E0000000780000001C0> 32 26 -4 2 35.353] 60 @dc
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<FFFFFFC0FFFFFFC0> 32 2 -4 -10 35.353] 0 @dc
1 /cmr10.329 @newfont
cmr10.329 @sf
[<7FFFFFE0FFFFFFF000000000000000000000000000000000000000000000000000000000000000
00FFFFFFF07FFFFFE0> 32 12 -3 -5 35.353] 61 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
[<60F0F060> 8 4 -3 0 10.666] 58 @dc
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<C00060E000E07001C03803801C07000E0E00071C0003B80001F00001F00003B800071C000E0E00
1C07003803807001C0E000E0C00060> 24 18 -5 0 29.864] 2 @dc
1 /cmr9.300 @newfont
cmr9.300 @sf
[<FFFFFF80FFFFFF80000000000000000000000000000000000000000000000000FFFFFF80FFFFFF
80> 32 10 -2 -4 29.864] 61 @dc
2 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 187 233 p (\(2\))s
23(Even)m
12(with)m
12 r 97 c
12(line)m
12(fast)m
12(enough)m
12(to)m
12(handle)m
12(packetized)m
12(typing)m
12(echo)m
12(\(4800)m
12(bps)m
12(or)m
12(above\),)m
264 289 p (there)s
9(may)m
9(be)m
9(an)m
9(undesirable)m
9(interaction)m
10(between)m
9(bulk)m
9(data)m
9(and)m
9(interactive)m
9(traf)m
(\014c:)s
16(For)m
264 346 p (reasonable)s
14(line)m
15(ef)m
(\014ciency)s
14(the)m
15(bulk)m
14(data)m
15(packet)m
15(size)m
15(needs)m
14(to)m
15(be)m
15(10)m
15(to)m
14(20)m
15(times)m
15(the)m
264 402 p (header)s
10(size.)m
17(I.e.,)m
11(the)m
11(line)m
t-ita.330 @sf 11(maximum)m
10(transmission)m
11(unit)m
t-rom.330 @sf 11(or)m
t-ita.330 @sf 10(MTU)m
t-rom.330 @sf 11(should)m
11(be)m
11(500)m
10(to)m
11(1000)m
264 458 p (bytes)s
9(for)m
9(40)m
10(byte)m
9(TCP/IP)m
9(headers.)m
17(Even)m
9(with)m
10(type-of-service)m
9(queuing)m
9(to)m
10(give)m
9(priority)m
264 515 p (to)s
12(interactive)m
11(traf)m
(\014c,)s
12 r 97 c
11(telnet)m
12(packet)m
12(has)m
12(to)m
12(wait)m
12(for)m
12(any)m
12(in-progress)m
11(bulk)m
12(data)m
12(packet)m
264 571 p (to)s
14(\014nish.)m
24(Assuming)m
14(data)m
14(transfer)m
14(in)m
14(only)m
14(one)m
14(direction,)m
14(that)m
14(wait)m
14(averages)m
14(half)m
14(the)m
264 628 p (MTU)s
11(or)m
12(500)m
11(ms)m
11(for)m
12 r 97 c
11(1024)m
12(byte)m
11(MTU)m
12(at)m
11(9600)m
12(bps.)m
187 741 p (\(3\))s
23(Any)m
18(communication)m
18(medium)m
17(has)m
18 r 97 c
18(maximum)m
18(signalling)m
18(rate,)m
19(the)m
18(Shannon)m
17(limit.)m
264 797 p (Based)s
16(on)m
15(an)m
16 r 65 c
-4(T&T)m
15(study[)m
50 c
(],)s
17(the)m
16(Shannon)m
16(limit)m
16(for)m
16 r 97 c
16(typical)m
16(dialup)m
16(phone)m
15(line)m
16(is)m
264 854 p (around)s
15(22,000)m
15(bps.)m
28(Since)m
15 r 97 c
15(full)m
15(duplex,)m
15(9600)m
15(bps)m
15(modem)m
15(already)m
16(runs)m
15(at)m
15(80%)m
15(of)m
264 910 p (the)s
11(limit,)m
12(modem)m
11(manufacturers)m
12(are)m
11(starting)m
12(to)m
11(of)m
(fer)s
11(asymmetric)m
12(allocation)m
11(schemes)m
264 967 p (to)s
13(increase)m
13(ef)m
(fective)s
12(bandwidth:)m
21(Since)m
13 r 97 c
13(line)m
13(rarely)m
13(has)m
13(equivalent)m
14(amounts)m
13(of)m
13(data)m
264 1023 p (\015owing)s
17(both)m
18(directions)m
18(simultaneously)m
-2 r 44 c
18(it)m
18(is)m
17(possible)m
18(to)m
18(give)m
18(one)m
17(end)m
18(of)m
18(the)m
17(line)m
264 1079 p (more)s
14(than)m
13 r 49 c
(1,000)s
13(bps)m
14(by)m
13(either)m
14(time-division)m
14(multiplexing)m
14 r 97 c
14(half-duplex)m
14(line)m
14(\(e.g.,)m
264 1136 p (the)s
17 r 84 c
-2(elebit)m
16 r 84 c
-1(railblazer\))m
17(or)m
17(of)m
(fering)s
16 r 97 c
18(low-speed)m
17(\\reverse)m
17(channel")m
18(\(e.g.,)m
18(the)m
18(USR)m
264 1192 p (Courier)s
13(HST\).)m
t-rom.240 @sf 533 1176 p 50 c
t-rom.330 @sf 568 1192 p (In)s
14(either)m
13(case,)m
13(the)m
14(modem)m
13(dynamically)m
13(tries)m
13(to)m
14(guess)m
13(which)m
13(end)m
13(of)m
264 1249 p (the)s
13(conversation)m
13(needs)m
13(high)m
13(bandwidth)m
13(by)m
13(assuming)m
13(one)m
13(end)m
13(of)m
13(the)m
13(conversation)m
13(is)m
264 1305 p 97 c
12(human)m
12(\(i.e.,)m
12(demand)m
12(is)m
12(limited)m
12(to)m
cmmi10.329 @sf 15 r 60 c
t-rom.330 @sf 4(300)m
12(bps)m
12(by)m
12(typing)m
12(speed\).)m
19(The)m
12(factor)m
(-of-forty)s
264 1362 p (bandwidth)s
14(multiplication)m
14(due)m
14(to)m
14(protocol)m
14(headers)m
14(will)m
14(fool)m
14(this)m
15(allocation)m
14(heuristic)m
264 1418 p (and)s
11(cause)m
12(these)m
11(modems)m
11(to)m
12(\\thrash".)m
221 1555 p (From)s
9(the)m
10(above,)m
10(it')m
-2 r 115 c
9(clear)m
10(that)m
9(one)m
10(design)m
10(goal)m
9(of)m
10(the)m
10(compression)m
9(should)m
10(be)m
10(to)m
9(limit)m
10(the)m
150 1612 p (bandwidth)s
10(demand)m
10(of)m
10(typing)m
10(and)m
9(ack)m
10(traf)m
(\014c)s
9(to)m
10(at)m
10(most)m
10(300)m
10(bps.)m
16 r 65 c
10(typical)m
10(maximum)m
10(typing)m
150 1668 p (speed)s
11(is)m
11(around)m
11(\014ve)m
11(characters)m
10(per)m
11(second)m
t-rom.240 @sf 921 1651 p 51 c
t-rom.330 @sf 954 1668 p (which)s
11(leaves)m
10 r 97 c
11(budget)m
14(30)m
cmsy10.329 @sf 9 r 0 c
t-rom.330 @sf 9 r 53 c
cmr10.329 @sf 13 r 61 c
t-rom.330 @sf 12(25)m
14(characters)m
150 1724 p (for)s
11(headers)m
11(or)m
11(\014ve)m
11(bytes)m
11(of)m
11(header)m
11(per)m
11(character)m
11(typed.)m
t-rom.240 @sf 1149 1708 p 52 c
t-rom.330 @sf 1188 1724 p (Five)s
11(byte)m
11(headers)m
11(solve)m
11(problems)m
150 1781 p (\(1\))s
10(and)m
10(\(3\))m
10(directly)m
10(and,)m
11(indirectly)m
-2 r 44 c
9(problem)m
10(\(2\):)m
17 r 65 c
10(packet)m
10(size)m
10(of)m
10(100{200)m
10(bytes)m
10(will)m
11(easily)m
150 1837 p (amortize)s
13(the)m
13(cost)m
12(of)m
13 r 97 c
13(\014ve)m
13(byte)m
13(header)m
12(and)m
13(of)m
(fer)s
12 r 97 c
13(user)m
13(95{98%)m
13(of)m
12(the)m
13(line)m
13(bandwidth)m
13(for)m
150 1897 p 660 2 ru
t-rom.180 @sf 200 1934 p 50 c
t-rom.270 @sf 217 1949 p (See)s
15(the)m
15(excellent)m
15(discussion)m
15(of)m
15(two-wire)m
15(dialup)m
15(line)m
15(capacity)m
15(in)m
15 r 91 c
49 c
(],)s
17(chap.)m
15 r 49 c
-1(1.)m
30(In)m
15(particular)m
44 c
15(there)m
15(is)m
150 1995 p (widespread)s
12(misunderstanding)m
13(of)m
12(the)m
12(capabilities)m
13(of)m
12(`echo-cancelling')m
12(modems)m
13(\(such)m
12(as)m
12(those)m
13(conforming)m
12(to)m
150 2041 p (CCITT)s
11 r 86 c
-4(.32\):)m
16(Echo-cancellation)m
11(can)m
11(of)m
(fer)s
11(each)m
11(side)m
11(of)m
11 r 97 c
11(two-wire)m
11(line)m
11(the)m
11(full)m
10(line)m
t-ita.270 @sf 11(bandwidth)m
t-rom.270 @sf 11(but,)m
12(since)m
11(the)m
150 2086 p (far)s
8(talker)m
2 r 39 c
-1 r 115 c
7(signal)m
8(adds)m
9(to)m
8(the)m
8(local)m
8(`noise',)m
12(not)m
793 2093 p 48 2 ru
852 2086 p (the)s
9(full)m
8(line)m
t-ita.270 @sf 8(capacity)m
t-rom.270 @sf 46 c
14(The)m
8(22Kbps)m
8(Shannon)m
9(limit)m
8(is)m
8 r 97 c
9(hard-limit)m
150 2132 p (on)s
9(data)m
10(rate)m
9(through)m
9 r 97 c
10(two-wire)m
9(telephone)m
10(connection.)m
t-rom.180 @sf 200 2171 p 51 c
t-rom.270 @sf 217 2187 p (See)s
14 r 91 c
(13)s
(].)s
27 r 84 c
-2(yping)m
13(bursts)m
14(or)m
13(multiple)m
14(character)m
14(keystrokes)m
13(such)m
14(as)m
13(cursor)m
14(keys)m
14(can)m
13(exceed)m
14(this)m
14(average)m
150 2233 p (rate)s
12(by)m
12(factors)m
12(of)m
11(two)m
12(to)m
12(four)m
-1 r 46 c
21(However)m
11(the)m
12(bandwidth)m
12(demand)m
12(stays)m
12(approximately)m
12(constant)m
11(since)m
12(the)m
12(TCP)m
150 2279 p (Nagle)s
11(algorithm[)m
56 c
93 c
11(aggregates)m
10(traf)m
(\014c)s
11(with)m
10 r 97 c
cmmi9.300 @sf 14 r 60 c
t-rom.270 @sf 3(200ms)m
11(interarrival)m
11(time)m
11(and)m
11(the)m
11(improved)m
10(header)m
(-to-data)s
10(ratio)m
150 2324 p (compensates)s
9(for)m
10(the)m
9(increased)m
9(data.)m
t-rom.180 @sf 200 2364 p 52 c
t-rom.270 @sf 217 2379 p 65 c
12(similar)m
11(analysis)m
11(leads)m
11(to)m
11(essentially)m
12(the)m
11(same)m
11(header)m
11(size)m
11(limit)m
12(for)m
11(bulk)m
11(data)m
11(transfer)m
11(ack)m
11(packets.)m
20(As-)m
150 2425 p (suming)s
10(that)m
9(the)m
10(MTU)m
10(has)m
10(been)m
9(selected)m
10(for)m
10(\\unobtrusive")m
9(background)m
10(\014le)m
10(transfers)m
10(\(i.e.,)m
9(chosen)m
10(so)m
10(the)m
10(packet)m
150 2471 p (time)s
12(is)m
13(200{400)m
12(ms)m
12 r 124 c
12(see)m
13(sec.)m
12(5\),)m
13(there)m
12(can)m
13(be)m
12(at)m
12(most)m
12 r 53 c
13(data)m
12(packets)m
12(per)m
12(second)m
13(in)m
12(the)m
12(\\high)m
13(bandwidth")m
150 2516 p (direction.)s
14 r 65 c
9(reasonable)m
10(TCP)m
9(implementation)m
9(will)m
9(ack)m
10(at)m
9(most)m
9(every)m
9(other)m
9(data)m
10(packet)m
9(so)m
9(at)m
9 r 53 c
10(bytes)m
9(per)m
9(ack)m
9(the)m
150 2562 p (reverse)s
9(channel)m
10(bandwidth)m
9(is)m
13 r 50 c
cmmi9.300 @sf 58 c
t-rom.270 @sf 53 c
cmsy9.300 @sf 8 r 2 c
t-rom.270 @sf 9 r 53 c
cmr9.300 @sf 10 r 61 c
t-rom.270 @sf 11(12)m
cmmi9.300 @sf 58 c
t-rom.270 @sf 53 c
12(bytes/sec.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(2])m
@eop
restore
%%Page: 3 5
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<0000000600000000060000000003000000000180000000018000000000C00000000070FFFFFFFF
F8FFFFFFFFFC000000007000000000C00000000180000000018000000003000000000600000000
0600> 40 16 -3 -3 45.454] 33 @dc
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
3 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
525 241 p 14208860 5683544 3881123 35522150 27694120 45192069 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:simple topology
%%%CreationDate: 2/26/89 9:43 PM
%%%DocumentFonts: Helvetica
%%BoundingBox: 59 540 421 687
%%%Pages:(atend)
%%%EndComments
/vmstate save def
0 780 translate 1 -1 scale
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag get not}{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{g stroke G
g currentlinewidth D -10 * D /hl x -2 ? /os x 2 * /hw x /bp x /ep x
.2 setlinewidth 0 setlinejoin
g flattenpath {}{}{}{} pathforall
counttomark 8 eq {8 4 roll}i
counttomark 8 gt {count 4 roll mark count 8 - 1 roll cleartomark}i
counttomark 6 eq {6 2 roll 2 copy 8 2 roll}i
counttomark 4 eq {4 copy}i G
N bp {4 2 roll ah}{pop pop pop pop}I ep {ah}{cleartomark mark}I G}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css G}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG cleartomark mark fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/of
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/uf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}b
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
g 0.000 1 1 0.000 132.000 166.999 fc
g 0.000 1 1 0.000 17.999 35.999 fc
newpath
-17.999 0.000 M
17.999 0.000 L
3.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 17.999 -36.000 fc
newpath
-17.999 0.000 M
17.999 0.000 L
3.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -17.999 -0.000 fc
newpath
-17.999 0.000 M
17.999 0.000 L
3.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -0.000 0.000 fc
newpath
0.000 -71.999 M
0.000 71.999 L
3.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 240.000 131.625 fc
newpath
-54.000 -1.375 M
54.000 -1.375 L
54.000 1.375 L
-54.000 1.375 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 240.000 203.625 fc
newpath
-54.000 -1.375 M
54.000 -1.375 L
54.000 1.375 L
-54.000 1.375 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 -1 1 0.000 347.999 166.998 fc
g 0.000 1 1 0.000 18.000 35.999 fc
newpath
-18.000 0.000 M
18.000 0.000 L
3.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 18.000 -35.999 fc
newpath
-18.000 0.000 M
18.000 0.000 L
3.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -18.000 -0.000 fc
newpath
-18.000 0.000 M
18.000 0.000 L
3.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
0.000 -71.998 M
0.000 71.998 L
3.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 77.999 167.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
18.000 18.000 0 360 a
g 1 SG fill G
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -7 M
/|______Helvetica findfont 24 scalefont setfont
{
(A) show
}cs
G
G
g 0.000 1 1 0.000 185.999 131.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
18.000 18.000 0 360 a
g 1 SG fill G
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -7 M
/|______Helvetica findfont 24 scalefont setfont
{
(C) show
}cs
G
G
g 0.000 1 1 0.000 293.999 131.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
18.000 18.000 0 360 a
g 1 SG fill G
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -7 M
/|______Helvetica findfont 24 scalefont setfont
{
(D) show
}cs
G
G
g 0.000 1 1 0.000 185.999 203.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
18.000 18.000 0 360 a
g 1 SG fill G
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -7 M
/|______Helvetica findfont 24 scalefont setfont
{
(E) show
}cs
G
G
g 0.000 1 1 0.000 293.999 203.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
18.000 18.000 0 360 a
g 1 SG fill G
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -7 M
/|______Helvetica findfont 24 scalefont setfont
{
(F) show
}cs
G
G
g 0.000 1 1 0.000 402.000 167.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
18.000 18.000 0 360 a
g 1 SG fill G
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -7 M
/|______Helvetica findfont 24 scalefont setfont
{
(B) show
}cs
G
G
%------ End Main Program ------%
end
vmstate restore
showpage pop
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 305 745 p (Figure)s
11(1:)m
h-med.330 @sf 17 r 65 c
13(topology)m
13(that)m
13(gives)m
12(incomplete)m
13(information)m
13(at)m
13(gateways)m
t-rom.330 @sf 150 879 p (data.)s
17(These)m
12(short)m
11(packets)m
11(mean)m
12(little)m
11(interference)m
12(between)m
11(interactive)m
11(and)m
12(bulk)m
11(data)m
12(traf)m
(\014c)s
150 936 p (\(see)s
11(sec.)m
12(5.2\).)m
221 998 p (Another)s
14(design)m
14(goal)m
14(is)m
15(that)m
14(the)m
14(compression)m
15(protocol)m
14(be)m
14(based)m
14(solely)m
15(on)m
14(information)m
150 1054 p (guaranteed)s
9(to)m
9(be)m
10(known)m
9(to)m
9(both)m
9(ends)m
9(of)m
9 r 97 c
10(single)m
9(serial)m
9(link.)m
16(Consider)m
10(the)m
9(topology)m
9(shown)m
9(in)m
150 1111 p (\014g.)s
11 r 49 c
11(where)m
11(communicating)m
11(hosts)m
11 r 65 c
11(and)m
10 r 66 c
11(are)m
11(on)m
11(separate)m
11(local)m
11(area)m
11(nets)m
11(\(the)m
11(heavy)m
11(black)m
150 1167 p (lines\))s
10(and)m
10(the)m
10(nets)m
10(are)m
10(connected)m
10(by)m
10(two)m
10(serial)m
10(links)m
10(\(the)m
10(open)m
10(lines)m
10(between)m
11(gateways)m
10(C{D)m
150 1224 p (and)s
15(E{F\).)m
t-rom.240 @sf 338 1207 p 53 c
t-rom.330 @sf 375 1224 p (One)s
16(compression)m
15(possibility)m
16(would)m
15(be)m
15(to)m
16(convert)m
15(each)m
16(TCP/IP)m
15(conversation)m
150 1280 p (into)s
13 r 97 c
13(semantically)m
13(equivalent)m
13(conversation)m
12(in)m
13 r 97 c
13(protocol)m
13(with)m
13(smaller)m
13(headers,)m
13(e.g.,)m
13(to)m
13(an)m
150 1337 p (X.25)s
16(call.)m
32(But,)m
18(because)m
16(of)m
16(routing)m
17(transients)m
16(or)m
16(multipathing,)m
18(it')m
-2 r 115 c
16(entirely)m
16(possible)m
16(that)m
150 1393 p (some)s
13(of)m
13(the)m
12(A{B)m
13(traf)m
(\014c)s
12(will)m
13(follow)m
13(the)m
13(A-C-D-B)m
12(path)m
13(and)m
13(some)m
13(will)m
13(follow)m
12(the)m
13(A-E-F-B)m
150 1450 p (path.)s
25(Similarly)m
-2 r 44 c
14(it')m
-2 r 115 c
13(possible)m
14(that)m
14 r 65 c
cmsy10.329 @sf 3 r 33 c
t-rom.330 @sf 3 r 66 c
15(traf)m
(\014c)s
13(will)m
14(\015ow)m
14(A-C-D-B)m
14(and)m
14 r 66 c
cmsy10.329 @sf 3 r 33 c
t-rom.330 @sf 3 r 65 c
14(traf)m
(\014c)s
13(will)m
150 1506 p (\015ow)s
9(B-F-E-A.)m
9(None)m
10(of)m
9(the)m
9(gateways)m
9(can)m
9(count)m
9(on)m
10(seeing)m
9(all)m
9(the)m
9(packets)m
9(in)m
9 r 97 c
10(particular)m
9(TCP)m
150 1562 p (conversation)s
11(and)m
10 r 97 c
11(compression)m
10(algorithm)m
11(that)m
10(works)m
11(for)m
11(such)m
10 r 97 c
11(topology)m
10(cannot)m
11(be)m
10(tied)m
11(to)m
150 1619 p (the)s
11(TCP)m
12(connection)m
11(syntax.)m
221 1681 p 65 c
9(physical)m
10(link)m
9(treated)m
10(as)m
9(two,)m
10(independent,)m
10(simplex)m
10(links)m
9(\(one)m
10(each)m
10(direction\))m
9(imposes)m
150 1738 p (the)s
11(minimum)m
11(requirements)m
12(on)m
11(topology)m
-2 r 44 c
10(routing)m
11(and)m
12(pipelining.)m
17(The)m
11(ends)m
11(of)m
11(each)m
12(simplex)m
150 1794 p (link)s
12(only)m
13(have)m
12(to)m
12(agree)m
12(on)m
13(the)m
12(most)m
12(recent)m
12(packet\(s\))m
13(sent)m
12(on)m
12(that)m
13(link.)m
19(Thus,)m
13(although)m
12(any)m
150 1851 p (compression)s
13(scheme)m
13(involves)m
12(shared)m
13(state,)m
13(this)m
13(state)m
13(is)m
13(spatially)m
13(and)m
13(temporally)m
12(local)m
13(and)m
150 1907 p (adheres)s
14(to)m
14(Dave)m
13(Clark')m
-1 r 115 c
13(principle)m
14(of)m
t-ita.330 @sf 13(fate)m
14(sharing)m
t-rom.330 @sf 91 c
52 c
(]:)s
22(The)m
14(two)m
14(ends)m
13(can)m
14(only)m
14(disagree)m
14(on)m
150 1963 p (the)s
12(state)m
12(if)m
11(the)m
12(link)m
12(connecting)m
12(them)m
12(is)m
11(inoperable,)m
12(in)m
12(which)m
12(case)m
12(the)m
12(disagreement)m
11(doesn')m
116 c
150 2020 p (matter)s
-2 r 46 c
150 2327 p 660 2 ru
t-rom.180 @sf 200 2364 p 53 c
t-rom.270 @sf 217 2379 p (Note)s
11(that)m
10(although)m
11(the)m
10(TCP)m
11(endpoints)m
10(are)m
11 r 65 c
10(and)m
10(B,)m
11(in)m
10(this)m
11(example)m
10(compression/decompression)m
11(must)m
10(be)m
150 2425 p (done)s
10(at)m
10(the)m
9(gateway)m
10(serial)m
10(links,)m
10(i.e.,)m
10(between)m
10 r 67 c
10(and)m
9 r 68 c
10(and)m
10(between)m
10 r 69 c
10(and)m
10 r 70 c
-2 r 46 c
8(Since)m
10 r 65 c
10(and)m
10 r 66 c
10(are)m
10(using)m
9(IP)m
-3 r 44 c
9(they)m
150 2471 p (cannot)s
12(know)m
11(that)m
12(their)m
12(communication)m
11(path)m
12(includes)m
12 r 97 c
11(low)m
12(speed)m
12(serial)m
11(link.)m
21(It)m
12(is)m
12(clearly)m
11 r 97 c
12(requirement)m
12(that)m
150 2516 p (compression)s
9(not)m
9(break)m
9(the)m
9(IP)m
8(model,)m
9(i.e.,)m
9(that)m
9(compression)m
9(function)m
9(between)m
9(intermediate)m
9(systems)m
9(and)m
9(not)m
8(just)m
150 2562 p (between)s
9(end)m
10(systems.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(3])m
@eop
restore
%%Page: 4 6
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<FFFFFFC0FFFFFFC000000000000000000000000000000000000000000000000000000000000000
C0000003C000000F0000003C000000F0000003C000000F0000001C00000078000001E000000780
00001E00000078000000E0000000780000001E0000000780000001E0000000780000001C000000
0F00000003C0000000F00000003C0000000F00000003C0000000C0> 32 36 -4 7 35.353] 20 @dc
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<01800180038003000700060006000E000C001C001800180038003000300070006000E000C000C0
00E00060007000300030003800180018001C000C000E000600060007000300038001800180> 16 38 -3 10 14.932] 104 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
[<C000C000E0006000700030003000380018001C000C000C000E0006000600070003000380018001
80038003000700060006000E000C000C001C00180038003000300070006000E000C000C000> 16 38 -2 10 14.932] 105 @dc
4 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
375 241 p 18945146 16482269 1403190 12498534 33055334 40126873 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:tcp-ip.header
%%%CreationDate: 2/13/89 9:15 PM
%%%DocumentFonts: Helvetica
%%%+ Helvetica-Bold
%%BoundingBox: 21.331 190.0 502.5 610.0
%%%Pages:(atend)
%%%EndComments
/vmstate save def
0 780 translate 1 -1 scale
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag get not}{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{g stroke G
g currentlinewidth D -10 * D /hl x -2 ? /os x 2 * /hw x /bp x /ep x
.2 setlinewidth 0 setlinejoin
g flattenpath {}{}{}{} pathforall
counttomark 8 eq {8 4 roll}i
counttomark 8 gt {count 4 roll mark count 8 - 1 roll cleartomark}i
counttomark 6 eq {6 2 roll 2 copy 8 2 roll}i
counttomark 4 eq {4 copy}i G
N bp {4 2 roll ah}{pop pop pop pop}I ep {ah}{cleartomark mark}I G}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css G}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG cleartomark mark fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/of
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/uf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}b
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
(Helvetica-Bold) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
g 0.000 1 1 0.000 412.000 242.500 fc
newpath
-89.999 -18.000 M
89.999 -18.000 L
89.999 18.000 L
-89.999 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 292.749 242.500 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 306.249 242.500 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 319.749 242.500 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 96.999 206.500 fc
newpath
-27.000 -18.000 M
27.000 -18.000 L
27.000 18.000 L
-27.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 150.999 206.500 fc
newpath
-27.000 -18.000 M
27.000 -18.000 L
27.000 18.000 L
-27.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 231.999 206.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 393.999 206.500 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 177.999 242.500 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 123.999 278.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 231.999 278.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 393.999 278.500 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 285.999 314.500 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 285.999 350.500 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 96.999 204.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Protocol) show
}cs
0 -8 M
{
(Version) show
}cs
G
g 0.000 1 -1 0.000 150.999 204.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Header) show
}cs
0 -8 M
{
(Length) show
}cs
G
g 0.000 1 -1 0.000 231.999 204.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Type of) show
}cs
0 -8 M
{
(Service) show
}cs
G
g 0.000 1 -1 0.000 393.999 207.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Total Length) show
}cs
G
g 0.000 1 -1 0.000 177.999 243.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Packet ID) show
}cs
G
g 0.000 1 -1 0.000 420.999 243.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Fragment Offset) show
}cs
G
g 0.000 1 -1 0.000 123.999 279.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Time to Live) show
}cs
G
g 0.000 1 -1 0.000 231.999 279.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Protocol) show
}cs
G
g 0.000 1 -1 0.000 393.999 279.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Header Checksum) show
}cs
G
g 0.000 1 -1 0.000 285.999 315.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Source Address) show
}cs
G
g 0.000 1 -1 0.000 285.999 351.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Destination Address) show
}cs
G
g 0.000 1 -1 0.000 305.999 240.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(D) show
}cs
0 -8 M
{
(F) show
}cs
G
g 0.000 1 -1 0.000 319.999 240.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(M) show
}cs
0 -8 M
{
(F) show
}cs
G
g 0.000 1 1 0.000 282.874 179.500 fc
g 0.000 1 1 0.000 -186.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 -132.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 -78.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 -24.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 30.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 84.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 138.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 192.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 -1 0.000 -206.250 1.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica-Bold findfont 10 scalefont setfont
{
(0) show
}cs
G
g 0.000 1 -1 0.000 -98.250 1.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica-Bold findfont 10 scalefont setfont
{
(8) show
}cs
G
g 0.000 1 -1 0.000 10.750 2.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 9 scalefont setfont
{
(16) show
}cs
G
g 0.000 1 -1 0.000 118.750 2.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 9 scalefont setfont
{
(24) show
}cs
G
G
g 0.000 1 -1 0.000 37.000 205.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(0) show
}cs
G
g 0.000 1 -1 0.000 36.500 180.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(Byte) show
}cs
G
g 0.000 1 -1 0.000 37.000 241.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(4) show
}cs
G
g 0.000 1 -1 0.000 37.000 278.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(8) show
}cs
G
g 0.000 1 -1 0.000 36.000 314.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(12) show
}cs
G
g 0.000 1 -1 0.000 36.000 350.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(16) show
}cs
G
g 0.000 1 -1 0.000 36.000 386.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(20) show
}cs
G
g 0.000 1 1 0.000 394.000 389.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 178.000 389.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 286.000 425.000 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 286.000 461.000 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 124.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 232.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 340.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 448.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 -1 0.000 389.500 389.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Destination Port) show
}cs
G
g 0.000 1 -1 0.000 177.500 389.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Source Port) show
}cs
G
g 0.000 1 -1 0.000 281.500 426.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Sequence Number) show
}cs
G
g 0.000 1 -1 0.000 281.500 463.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Acknowledgment Number) show
}cs
G
g 0.000 1 -1 0.000 119.500 573.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data Byte 1) show
}cs
G
g 0.000 1 -1 0.000 227.500 573.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data Byte 2) show
}cs
G
g 0.000 1 -1 0.000 335.500 573.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data Byte 3) show
}cs
G
g 0.000 1 -1 0.000 447.000 573.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 18 scalefont setfont
{
(...) show
}cs
G
g 0.000 1 -1 0.000 37.000 428.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(24) show
}cs
G
g 0.000 1 -1 0.000 37.000 464.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(28) show
}cs
G
g 0.000 1 -1 0.000 36.000 500.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(32) show
}cs
G
g 0.000 1 -1 0.000 36.000 536.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(36) show
}cs
G
g 0.000 1 -1 0.000 36.000 572.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(40) show
}cs
G
g 0.000 1 1 0.000 97.000 497.000 fc
newpath
-27.000 -18.000 M
27.000 -18.000 L
27.000 18.000 L
-27.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 97.000 495.000 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data) show
}cs
0 -8 M
{
(Offset) show
}cs
G
g 0.000 1 1 0.000 394.000 497.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 389.500 500.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Window) show
}cs
G
g 0.000 1 1 0.000 238.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 251.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 264.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 277.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 210.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 223.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 394.000 533.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 178.000 533.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 389.500 535.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Urgent Pointer) show
}cs
G
g 0.000 1 -1 0.000 173.500 535.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Checksum) show
}cs
G
g 0.000 1 -1 270.000 278.000 497.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(fin) show
}cs
G
g 0.000 1 -1 270.000 263.500 498.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(syn) show
}cs
G
g 0.000 1 -1 270.000 251.000 499.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(rst) show
}cs
G
g 0.000 1 -1 270.000 237.500 498.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(psh) show
}cs
G
g 0.000 1 -1 270.000 223.000 497.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(ack) show
}cs
G
g 0.000 1 -1 270.000 209.500 498.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(urg) show
}cs
G
%------ End Main Program ------%
end
vmstate restore
showpage pop
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 538 1428 p (Figure)s
11(2:)m
h-med.330 @sf 17(The)m
13(header)m
13(of)m
13 r 97 c
12(TCP/IP)m
13(datagram)m
t-bol.420 @sf 150 1565 p 51 c
58(The)m
15(compr)m
(ession)s
13(algorithm)m
t-bol.360 @sf 150 1679 p (3.1)s
50(The)m
12(basic)m
13(idea)m
t-rom.330 @sf 150 1774 p (Figure)s
9 r 50 c
10(shows)m
9 r 97 c
10(typical)m
9(\(and)m
9(minimum)m
10(length\))m
9(TCP/IP)m
10(datagram)m
9(header)m
-2 r 46 c
t-rom.240 @sf 1478 1758 p 54 c
t-rom.330 @sf 1516 1774 p (The)s
10(header)m
9(size)m
150 1831 p (is)s
13(40)m
13(bytes:)m
19(20)m
13(bytes)m
13(of)m
13(IP)m
12(and)m
13(20)m
13(of)m
13(TCP)m
-4 r 46 c
12(Unfortunately)m
-2 r 44 c
12(since)m
12(the)m
13(TCP)m
13(and)m
13(IP)m
13(protocols)m
150 1887 p (were)s
14(not)m
13(designed)m
14(by)m
13 r 97 c
14(committee,)m
14(all)m
13(these)m
14(header)m
13(\014elds)m
14(serve)m
13(some)m
14(useful)m
13(purpose)m
14(and)m
150 1944 p (it')s
-2 r 115 c
11(not)m
11(possible)m
12(to)m
11(simply)m
12(omit)m
11(some)m
12(in)m
11(the)m
12(name)m
11(of)m
12(ef)m
(\014ciency)s
-3 r 46 c
221 2007 p (However)s
-1 r 44 c
12(TCP)m
13(establishes)m
13(connections)m
12(and,)m
14(typically)m
-2 r 44 c
12(tens)m
13(or)m
12(hundreds)m
13(of)m
13(packets)m
13(are)m
150 2064 p (exchanged)s
13(on)m
12(each)m
13(connection.)m
21(How)m
13(much)m
12(of)m
13(the)m
13(per)m
(-packet)s
11(information)m
13(is)m
13(likely)m
13(to)m
12(stay)m
150 2120 p (constant)s
8(over)m
8(the)m
7(life)m
8(of)m
8 r 97 c
8(connection?)m
16(Half|the)m
7(shaded)m
8(\014elds)m
8(in)m
8(\014g.)m
7(3.)m
16(So,)m
9(if)m
8(the)m
7(sender)m
8(and)m
150 2177 p (receiver)s
10(keep)m
9(track)m
10(of)m
9(active)m
10(connections)m
t-rom.240 @sf 893 2160 p 55 c
t-rom.330 @sf 925 2177 p (and)s
9(the)m
10(receiver)m
9(keeps)m
10 r 97 c
10(copy)m
9(of)m
10(the)m
9(header)m
10(from)m
150 2233 p (the)s
10(last)m
10(packet)m
9(it)m
10(saw)m
10(from)m
10(each)m
10(connection,)m
10(the)m
10(sender)m
9(gets)m
10 r 97 c
10(factor)m
(-of-two)s
9(compression)m
10(by)m
150 2290 p (sending)s
12(only)m
11 r 97 c
12(small)m
11 r 40 c
cmsy10.329 @sf 3 r 20 c
t-rom.330 @sf 6 r 56 c
14(bit\))m
t-ita.330 @sf 12(connection)m
12(identi\014er)m
t-rom.330 @sf 11(together)m
12(with)m
11(the)m
12(20)m
11(bytes)m
12(that)m
12(change)m
150 2346 p (and)s
11(letting)m
12(the)m
11(receiver)m
12(\014ll)m
11(in)m
12(the)m
11(20)m
12(\014xed)m
11(bytes)m
12(from)m
11(the)m
11(saved)m
12(header)m
-2 r 46 c
221 2410 p (One)s
13(can)m
14(scavenge)m
13 r 97 c
14(few)m
14(more)m
13(bytes)m
14(by)m
13(noting)m
14(that)m
14(any)m
13(reasonable)m
14(link-level)m
13(framing)m
150 2455 p 660 2 ru
t-rom.180 @sf 200 2491 p 54 c
t-rom.270 @sf 217 2507 p (The)s
10(TCP)m
9(and)m
10(IP)m
9(protocols)m
9(and)m
10(protocol)m
9(headers)m
9(are)m
10(described)m
9(in)m
10 r 91 c
(10)s
93 c
9(and)m
9 r 91 c
49 c
49 c
(].)s
t-rom.180 @sf 200 2546 p 55 c
t-rom.270 @sf 217 2562 p (The)s
10(96-bit)m
9(tuple)m
cmsy9.300 @sf 13 r 104 c
t-ita.270 @sf (sr)s
-1 r 99 c
9(addr)m
-1(ess,)m
9(dst)m
9(addr)m
(ess,)s
8(sr)m
99 c
8(port,)m
9(dst)m
10(port)m
cmsy9.300 @sf 105 c
t-rom.270 @sf 12(uniquely)m
10(identi\014es)m
9 r 97 c
9(TCP)m
10(connection.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(4])m
@eop
restore
%%Page: 5 7
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<0000000600000000060000000003000000000180000000018000000000C00000000070FFFFFFFF
F8FFFFFFFFFC000000007000000000C00000000180000000018000000003000000000600000000
0600> 40 16 -3 -3 45.454] 33 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
5 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
375 241 p 18945146 16482269 1403190 12498534 33055334 40126873 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:tcp-ip.header.changes
%%%CreationDate: 2/13/89 9:13 PM
%%%DocumentFonts: Helvetica
%%%+ Helvetica-Bold
%%BoundingBox: 21.331 190.0 502.5 610.0
%%%Pages:(atend)
%%%EndComments
/vmstate save def
0 780 translate 1 -1 scale
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag get not}{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{g stroke G
g currentlinewidth D -10 * D /hl x -2 ? /os x 2 * /hw x /bp x /ep x
.2 setlinewidth 0 setlinejoin
g flattenpath {}{}{}{} pathforall
counttomark 8 eq {8 4 roll}i
counttomark 8 gt {count 4 roll mark count 8 - 1 roll cleartomark}i
counttomark 6 eq {6 2 roll 2 copy 8 2 roll}i
counttomark 4 eq {4 copy}i G
N bp {4 2 roll ah}{pop pop pop pop}I ep {ah}{cleartomark mark}I G}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css G}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG cleartomark mark fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/of
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/uf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}b
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
(Helvetica-Bold) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
g 0.000 1 1 0.000 232.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 164.250 497.250 fc
newpath
-41.250 -19.250 M
41.250 -19.250 L
41.250 19.250 L
-41.250 19.250 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 412.000 242.500 fc
newpath
-89.999 -18.000 M
89.999 -18.000 L
89.999 18.000 L
-89.999 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 292.749 242.500 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 306.249 242.500 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 319.749 242.500 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 96.999 206.500 fc
newpath
-27.000 -18.000 M
27.000 -18.000 L
27.000 18.000 L
-27.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 150.999 206.500 fc
newpath
-27.000 -18.000 M
27.000 -18.000 L
27.000 18.000 L
-27.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 231.999 206.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 393.999 206.500 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 177.999 242.500 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 123.999 278.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 231.999 278.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 393.999 278.500 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 285.999 314.500 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 285.999 350.500 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 96.999 204.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Protocol) show
}cs
0 -8 M
{
(Version) show
}cs
G
g 0.000 1 -1 0.000 150.999 204.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Header) show
}cs
0 -8 M
{
(Length) show
}cs
G
g 0.000 1 -1 0.000 393.999 207.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Total Length) show
}cs
G
g 0.000 1 -1 0.000 177.999 243.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Packet ID) show
}cs
G
g 0.000 1 -1 0.000 420.999 243.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Fragment Offset) show
}cs
G
g 0.000 1 -1 0.000 123.999 279.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Time to Live) show
}cs
G
g 0.000 1 -1 0.000 231.999 279.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Protocol) show
}cs
G
g 0.000 1 -1 0.000 393.999 279.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Header Checksum) show
}cs
G
g 0.000 1 -1 0.000 285.999 315.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Source Address) show
}cs
G
g 0.000 1 -1 0.000 285.999 351.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Destination Address) show
}cs
G
g 0.000 1 -1 0.000 305.999 240.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(D) show
}cs
0 -8 M
{
(F) show
}cs
G
g 0.000 1 -1 0.000 319.999 240.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(M) show
}cs
0 -8 M
{
(F) show
}cs
G
g 0.000 1 1 0.000 282.874 179.500 fc
g 0.000 1 1 0.000 -186.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 -132.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 -78.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 -24.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 30.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 84.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 138.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 1 0.000 192.000 0.000 fc
g 0.000 1 1 0.000 -19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 -6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 6.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 19.500 0.000 fc
newpath
-6.750 -9.000 M
6.750 -9.000 L
6.750 9.000 L
-6.750 9.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
G
g 0.000 1 -1 0.000 -206.250 1.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica-Bold findfont 10 scalefont setfont
{
(0) show
}cs
G
g 0.000 1 -1 0.000 -98.250 1.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica-Bold findfont 10 scalefont setfont
{
(8) show
}cs
G
g 0.000 1 -1 0.000 10.750 2.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 9 scalefont setfont
{
(16) show
}cs
G
g 0.000 1 -1 0.000 118.750 2.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 9 scalefont setfont
{
(24) show
}cs
G
G
g 0.000 1 -1 0.000 37.000 205.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(0) show
}cs
G
g 0.000 1 -1 0.000 36.500 180.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(Byte) show
}cs
G
g 0.000 1 -1 0.000 37.000 241.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(4) show
}cs
G
g 0.000 1 -1 0.000 37.000 278.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(8) show
}cs
G
g 0.000 1 -1 0.000 36.000 314.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(12) show
}cs
G
g 0.000 1 -1 0.000 36.000 350.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(16) show
}cs
G
g 0.000 1 -1 0.000 36.000 386.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(20) show
}cs
G
g 0.000 1 1 0.000 394.000 389.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 178.000 389.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 286.000 425.000 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 286.000 461.000 fc
newpath
-216.000 -18.000 M
216.000 -18.000 L
216.000 18.000 L
-216.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 124.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 340.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 448.000 571.500 fc
newpath
-54.000 -18.000 M
54.000 -18.000 L
54.000 18.000 L
-54.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 -1 0.000 389.500 389.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Destination Port) show
}cs
G
g 0.000 1 -1 0.000 177.500 389.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Source Port) show
}cs
G
g 0.000 1 -1 0.000 281.500 426.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Sequence Number) show
}cs
G
g 0.000 1 -1 0.000 281.500 463.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Acknowledgment Number) show
}cs
G
g 0.000 1 -1 0.000 119.500 573.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data Byte 1) show
}cs
G
g 0.000 1 -1 0.000 227.500 573.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data Byte 2) show
}cs
G
g 0.000 1 -1 0.000 335.500 573.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data Byte 3) show
}cs
G
g 0.000 1 -1 0.000 447.000 573.000 fc
/myshow /show load def
0 SG
0 -5 M
/|______Helvetica-Bold findfont 18 scalefont setfont
{
(...) show
}cs
G
g 0.000 1 -1 0.000 37.000 428.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(24) show
}cs
G
g 0.000 1 -1 0.000 37.000 464.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(28) show
}cs
G
g 0.000 1 -1 0.000 36.000 500.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(32) show
}cs
G
g 0.000 1 -1 0.000 36.000 536.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(36) show
}cs
G
g 0.000 1 -1 0.000 36.000 572.500 fc
/myshow /show load def
0 SG
0 -4 M
/|______Helvetica-Bold findfont 14 scalefont setfont
{
(40) show
}cs
G
g 0.000 1 1 0.000 97.000 497.000 fc
newpath
-27.000 -18.000 M
27.000 -18.000 L
27.000 18.000 L
-27.000 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 97.000 495.000 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Data) show
}cs
0 -8 M
{
(Offset) show
}cs
G
g 0.000 1 1 0.000 394.000 497.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 389.500 500.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Window) show
}cs
G
g 0.000 1 1 0.000 238.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 251.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 264.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 277.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 210.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 223.750 497.000 fc
newpath
-6.750 -18.000 M
6.750 -18.000 L
6.750 18.000 L
-6.750 18.000 L
closepath
g 0.900 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 394.000 533.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 178.000 533.000 fc
newpath
-108.000 -18.000 M
108.000 -18.000 L
108.000 18.000 L
-108.000 18.000 L
closepath
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 389.500 535.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Urgent Pointer) show
}cs
G
g 0.000 1 -1 0.000 173.500 535.000 fc
/myshow /show load def
0 SG
-1 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Checksum) show
}cs
G
g 0.000 1 -1 270.000 278.000 497.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(fin) show
}cs
G
g 0.000 1 -1 270.000 263.500 498.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(syn) show
}cs
G
g 0.000 1 -1 270.000 251.000 499.000 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(rst) show
}cs
G
g 0.000 1 -1 270.000 237.500 498.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(psh) show
}cs
G
g 0.000 1 -1 270.000 223.000 497.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(ack) show
}cs
G
g 0.000 1 -1 270.000 209.500 498.500 fc
/myshow /show load def
0 SG
0 -3 M
/|______Helvetica findfont 10 scalefont setfont
{
(urg) show
}cs
G
g 0.000 1 -1 0.000 231.999 204.500 fc
/myshow /show load def
0 SG
0 3 M
/|______Helvetica findfont 10 scalefont setfont
{
(Type of) show
}cs
0 -8 M
{
(Service) show
}cs
G
%------ End Main Program ------%
end
vmstate restore
showpage pop
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 437 1428 p (Figure)s
12(3:)m
h-med.330 @sf 17(Fields)m
13(that)m
12(change)m
13(during)m
13 r 97 c
13(TCP)m
12(connection)m
t-rom.330 @sf 150 1587 p (protocol)s
17(will)m
16(tell)m
17(the)m
17(receiver)m
16(the)m
17(length)m
17(of)m
16 r 97 c
17(received)m
17(message)m
16(so)m
t-ita.330 @sf 17(total)m
16(length)m
t-rom.330 @sf 17(\(bytes)m
17 r 50 c
150 1643 p (and)s
17(3\))m
18(is)m
17(redundant.)m
35(But)m
17(then)m
18(the)m
t-ita.330 @sf 17(header)m
17(checksum)m
t-rom.330 @sf 18(\(bytes)m
17(10)m
17(and)m
18 r 49 c
-1(1\),)m
18(which)m
17(protects)m
150 1700 p (individual)s
14(hops)m
14(from)m
14(processing)m
14 r 97 c
14(corrupted)m
14(IP)m
14(header)m
-1 r 44 c
14(is)m
14(essentially)m
14(the)m
14(only)m
14(part)m
14(of)m
14(the)m
150 1756 p (IP)s
14(header)m
13(being)m
14(sent.)m
23(It)m
14(seems)m
13(rather)m
14(silly)m
14(to)m
13(protect)m
14(the)m
13(transmission)m
14(of)m
13(information)m
14(that)m
150 1813 p (isn')s
116 c
9(being)m
10(transmitted.)m
17(So,)m
10(the)m
10(receiver)m
10(can)m
10(check)m
10(the)m
10(header)m
10(checksum)m
10(when)m
10(the)m
10(header)m
10(is)m
150 1869 p (actually)s
8(sent)m
8(\(i.e.,)m
9(in)m
8(an)m
8(uncompressed)m
8(datagram\))m
8(but,)m
9(for)m
8(compressed)m
8(datagrams,)m
9(regenerate)m
150 1926 p (it)s
11(locally)m
12(at)m
11(the)m
12(same)m
11(time)m
12(the)m
11(rest)m
12(of)m
11(the)m
12(IP)m
11(header)m
11(is)m
12(being)m
11(regenerated.)m
t-rom.240 @sf 1465 1909 p 56 c
t-rom.330 @sf 221 2002 p (This)s
6(leaves)m
7(16)m
7(bytes)m
7(of)m
7(header)m
7(information)m
7(to)m
7(send.)m
16(All)m
6(of)m
7(these)m
7(bytes)m
7(are)m
7(likely)m
7(to)m
7(change)m
150 2059 p (over)s
11(the)m
12(life)m
11(of)m
11(the)m
12(conversation)m
11(but)m
11(they)m
12(do)m
11(not)m
12(all)m
11(change)m
11(at)m
12(the)m
11(same)m
11(time.)m
18(For)m
11(example,)m
150 2115 p (during)s
15(an)m
15(FTP)m
14(data)m
15(transfer)m
15(only)m
15(the)m
t-ita.330 @sf 15(packet)m
15(ID)m
t-rom.330 @sf 44 c
t-ita.330 @sf 14(sequence)m
15(number)m
t-rom.330 @sf 15(and)m
t-ita.330 @sf 15(checksum)m
t-rom.330 @sf 15(change)m
150 2171 p (in)s
17(the)m
16(sender)m
cmsy10.329 @sf 3 r 33 c
t-rom.330 @sf 3(receiver)m
17(direction)m
16(and)m
17(only)m
17(the)m
t-ita.330 @sf 16(packet)m
17(ID)m
t-rom.330 @sf 44 c
t-ita.330 @sf 16(ack)m
t-rom.330 @sf 44 c
t-ita.330 @sf 18(checksum)m
t-rom.330 @sf 17(and,)m
17(possibly)m
-2 r 44 c
t-ita.330 @sf 150 2228 p (window)s
t-rom.330 @sf 44 c
12(change)m
12(in)m
13(the)m
12(receiver)m
cmsy10.329 @sf 3 r 33 c
t-rom.330 @sf 3(sender)m
12(direction.)m
19 r 87 c
-1(ith)m
12 r 97 c
12(copy)m
12(of)m
12(the)m
12(last)m
12(packet)m
12(sent)m
13(for)m
150 2284 p (each)s
15(connection,)m
16(the)m
15(sender)m
15(can)m
15(\014gure)m
15(out)m
15(what)m
15(\014elds)m
15(change)m
15(in)m
15(the)m
15(current)m
14(packet)m
15(then)m
150 2373 p 660 2 ru
t-rom.180 @sf 200 2409 p 56 c
t-rom.270 @sf 217 2425 p (The)s
8(IP)m
7(header)m
8(checksum)m
7(is)m
t-ita.270 @sf 8(not)m
t-rom.270 @sf 7(an)m
8(end-to-end)m
7(checksum)m
8(in)m
7(the)m
8(sense)m
7(of)m
8 r 91 c
(14)s
(]:)s
13(The)m
7(time-to-live)m
8(update)m
7(forces)m
150 2471 p (the)s
11(IP)m
11(checksum)m
11(to)m
11(be)m
12(recomputed)m
11(at)m
11(each)m
11(hop.)m
19(The)m
11(author)m
12(has)m
11(had)m
11(unpleasant)m
11(personal)m
11(experience)m
11(with)m
11(the)m
150 2516 p (consequences)s
11(of)m
11(violating)m
10(the)m
t-ita.270 @sf 11(end-to-end)m
11(ar)m
(gument)s
t-rom.270 @sf 9(in)m
11 r 91 c
(14)s
93 c
11(and)m
11(this)m
10(protocol)m
11(is)m
11(careful)m
11(to)m
11(pass)m
10(the)m
11(end-to-end)m
150 2562 p (TCP)s
9(checksum)m
10(through)m
9(unmodi\014ed.)m
14(See)m
10(sec.)m
9(4.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(5])m
@eop
restore
%%Page: 6 8
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<000001C00000078000001E00000078000001E00000078000000E0000003C000000F0000003C000
000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000E
0000000780000001E0000000780000001E0000000780000001C0> 32 26 -4 2 35.353] 60 @dc
1 /cmr10.329 @newfont
cmr10.329 @sf
[<7FFFFFE0FFFFFFF000000000000000000000000000000000000000000000000000000000000000
00FFFFFFF07FFFFFE0> 32 12 -3 -5 35.353] 61 @dc
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
6 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 150 233 p (send)s
11 r 97 c
12(bitmask)m
11(indicating)m
12(what)m
11(changed)m
12(followed)m
11(by)m
12(the)m
11(changing)m
12(\014elds.)m
t-rom.240 @sf 1486 216 p 57 c
t-rom.330 @sf 221 297 p (If)s
9(the)m
10(sender)m
9(only)m
9(sends)m
10(\014elds)m
9(that)m
10(dif)m
(fer)s
-2 r 44 c
9(the)m
10(above)m
9(scheme)m
10(gets)m
9(the)m
10(average)m
9(header)m
10(size)m
150 354 p (down)s
10(to)m
11(around)m
10(ten)m
10(bytes.)m
17(However)m
-1 r 44 c
10(it')m
-2 r 115 c
10(worthwhile)m
10(looking)m
10(at)m
10(how)m
11(the)m
10(\014elds)m
10(change:)m
17(The)m
150 410 p (packet)s
12(ID)m
12(typically)m
11(comes)m
12(from)m
12 r 97 c
12(counter)m
12(that)m
12(is)m
11(incremented)m
12(by)m
12(one)m
12(for)m
12(each)m
12(packet)m
11(sent.)m
150 467 p (I.e.,)s
11(the)m
10(dif)m
(ference)s
10(between)m
11(the)m
10(current)m
11(and)m
11(previous)m
10(packet)m
11(IDs)m
10(should)m
11(be)m
11 r 97 c
10(small,)m
11(positive)m
150 523 p (integer)s
-1 r 44 c
12(usually)m
cmmi10.329 @sf 15 r 60 c
t-rom.330 @sf 3(256)m
13(\(one)m
12(byte\))m
12(and)m
12(frequently)m
cmr10.329 @sf 16 r 61 c
t-rom.330 @sf 6 r 49 c
3 r 46 c
20(For)m
12(packets)m
13(from)m
12(the)m
12(sender)m
13(side)m
12(of)m
150 580 p 97 c
12(data)m
13(transfer)m
-1 r 44 c
11(the)m
12(sequence)m
13(number)m
12(in)m
12(the)m
13(current)m
12(packet)m
12(will)m
12(be)m
13(the)m
12(sequence)m
12(number)m
13(in)m
150 636 p (the)s
13(previous)m
13(packet)m
13(plus)m
13(the)m
13(amount)m
13(of)m
13(data)m
12(in)m
13(the)m
13(previous)m
13(packet)m
13(\(assuming)m
13(the)m
13(packets)m
150 692 p (are)s
13(arriving)m
12(in)m
13(order\).)m
20(Since)m
13(IP)m
12(packets)m
13(can)m
12(be)m
13(at)m
13(most)m
12(64K,)m
13(the)m
12(sequence)m
13(number)m
12(change)m
150 749 p (must)s
11(be)m
cmmi10.329 @sf 15 r 60 c
t-rom.330 @sf 5 r 50 c
t-rom.240 @sf 372 732 p (16)s
t-rom.330 @sf 421 749 p (\(two)s
12(bytes\).)m
17(So,)m
11(if)m
12(the)m
t-ita.330 @sf 11(differ)m
-1(ences)m
t-rom.330 @sf 11(in)m
11(the)m
11(changing)m
12(\014elds)m
11(are)m
11(sent)m
12(rather)m
11(than)m
150 805 p (the)s
11(\014elds)m
12(themselves,)m
11(another)m
12(three)m
11(or)m
12(four)m
11(bytes)m
12(per)m
11(packet)m
12(can)m
11(be)m
11(saved.)m
221 870 p (That)s
12(gets)m
12(us)m
13(to)m
12(the)m
13(\014ve-byte)m
12(header)m
12(tar)m
(get.)s
20(Recognizing)m
12 r 97 c
12(couple)m
13(of)m
12(special)m
13(cases)m
12(will)m
150 927 p (get)s
14(us)m
15(three)m
14(byte)m
15(headers)m
14(for)m
14(the)m
15(two)m
14(most)m
14(common)m
15(cases|interactive)m
14(typing)m
15(traf)m
(\014c)s
13(and)m
150 983 p (bulk)s
12(data)m
11(transfer)m
(|but)s
11(the)m
11(basic)m
12(compression)m
11(scheme)m
12(is)m
11(the)m
12(dif)m
(ferential)s
11(coding)m
11(developed)m
150 1039 p (above.)s
19(Given)m
12(that)m
12(this)m
12(intellectual)m
12(exercise)m
12(suggests)m
12(it)m
12(is)m
13(possible)m
12(to)m
12(get)m
12(\014ve)m
12(byte)m
12(headers,)m
150 1096 p (it)s
11(seems)m
12(reasonable)m
11(to)m
12(\015esh)m
11(out)m
12(the)m
11(missing)m
12(details)m
11(and)m
12(actually)m
11(implement)m
11(something.)m
t-bol.360 @sf 150 1239 p (3.2)s
50(The)m
12(ugly)m
13(details)m
t-bol.330 @sf 150 1337 p (3.2.1)s
46(Overview)m
t-rom.330 @sf 150 1434 p (Figure)s
17 r 52 c
17(shows)m
16 r 97 c
17(block)m
17(diagram)m
17(of)m
17(the)m
16(compression)m
17(software.)m
33(The)m
17(networking)m
17(system)m
150 1491 p (calls)s
16 r 97 c
15(SLIP)m
16(output)m
15(driver)m
16(with)m
16(an)m
15(IP)m
16(packet)m
15(to)m
16(be)m
16(sent)m
15(over)m
16(the)m
15(serial)m
16(line.)m
29(The)m
16(packet)m
150 1547 p (goes)s
17(through)m
16 r 97 c
17(compressor)m
16(which)m
17(checks)m
16(if)m
17(the)m
17(protocol)m
16(is)m
17(TCP)m
-4 r 46 c
15(Non-TCP)m
17(packets)m
16(and)m
150 1603 p (\\uncompressible")s
13(TCP)m
13(packets)m
13(\(described)m
13(below\))m
13(are)m
13(just)m
13(marked)m
12(as)m
t-romsc.330 @sf 13(type)m
1527 1610 p 23 2 ru
1553 1603 p (ip)s
t-rom.330 @sf 13(and)m
13(passed)m
150 1660 p (to)s
15 r 97 c
15(framer)m
-2 r 46 c
27(Compressible)m
15(TCP)m
15(packets)m
15(are)m
15(looked)m
15(up)m
15(in)m
15(an)m
15(array)m
15(of)m
15(packet)m
15(headers.)m
27(If)m
150 1716 p 97 c
14(matching)m
14(connection)m
13(is)m
14(found,)m
15(the)m
13(incoming)m
14(packet)m
14(is)m
14(compressed,)m
14(the)m
14(\(uncompressed\))m
150 1773 p (packet)s
11(header)m
10(is)m
11(copied)m
10(into)m
11(the)m
10(array)m
-2 r 44 c
10(and)m
11 r 97 c
10(packet)m
11(of)m
11(type)m
t-romsc.330 @sf 10(compressed)m
1468 1779 p 23 2 ru
1494 1773 p (tcp)s
t-rom.330 @sf 11(is)m
10(sent)m
11(to)m
11(the)m
150 1829 p (framer)s
-2 r 46 c
16(If)m
11(no)m
11(match)m
11(is)m
11(found,)m
11(the)m
10(oldest)m
11(entry)m
11(in)m
11(the)m
11(array)m
10(is)m
11(discarded,)m
11(the)m
11(packet)m
11(header)m
11(is)m
150 1886 p (copied)s
13(into)m
12(that)m
13(slot,)m
13(and)m
13 r 97 c
12(packet)m
13(of)m
13(type)m
t-romsc.330 @sf 12(uncompressed)m
1224 1892 p 23 2 ru
1250 1886 p (tcp)s
t-rom.330 @sf 13(is)m
12(sent)m
13(to)m
13(the)m
12(framer)m
-1 r 46 c
20(\(An)m
t-romsc.330 @sf 150 1942 p (uncompressed)s
446 1949 p 23 2 ru
473 1942 p (tcp)s
t-rom.330 @sf 8(packet)m
8(is)m
8(identical)m
8(to)m
9(the)m
8(original)m
8(IP)m
8(packet)m
9(except)m
8(the)m
8(IP)m
8(protocol)m
8(\014eld)m
150 1999 p (is)s
15(replaced)m
15(with)m
15 r 97 c
t-ita.330 @sf 15(connection)m
15(number)m
t-rom.330 @sf (|an)s
15(index)m
15(into)m
15(the)m
15(array)m
15(of)m
15(saved,)m
16(per)m
(-connection)s
150 2055 p (packet)s
13(headers.)m
21(This)m
13(is)m
13(how)m
12(the)m
13(sender)m
13(\(re-\)synchronizes)m
13(the)m
13(receiver)m
12(and)m
13(\\seeds")m
13(it)m
13(with)m
150 2112 p (the)s
11(\014rst,)m
12(uncompressed)m
11(packet)m
12(of)m
11 r 97 c
12(compressed)m
11(packet)m
12(sequence.\))m
221 2176 p (The)s
14(framer)m
14(is)m
14(responsible)m
14(for)m
14(communicating)m
14(the)m
15(packet)m
14(data,)m
15(type)m
14(and)m
14(boundary)m
14(\(so)m
150 2233 p (the)s
19(decompressor)m
18(can)m
19(learn)m
18(how)m
19(many)m
18(bytes)m
19(came)m
19(out)m
18(of)m
19(the)m
18(compressor\).)m
39(Since)m
18(the)m
150 2282 p 660 2 ru
t-rom.180 @sf 200 2318 p 57 c
t-rom.270 @sf 217 2334 p (This)s
16(is)m
15(approximately)m
t-ita.270 @sf 15(Thinwir)m
(e-I)s
t-rom.270 @sf 14(from)m
15 r 91 c
53 c
(].)s
32 r 65 c
15(slight)m
16(modi\014cation)m
15(is)m
15(to)m
16(do)m
15 r 97 c
15(\\delta)m
15(encoding")m
16(where)m
150 2379 p (the)s
13(sender)m
13(subtracts)m
13(the)m
12(previous)m
13(packet)m
13(from)m
13(the)m
13(current)m
13(packet)m
13(\(treating)m
13(each)m
12(packet)m
13(as)m
13(an)m
13(array)m
13(of)m
13(16)m
13(bit)m
150 2425 p (integers\),)s
8(then)m
8(sends)m
7 r 97 c
8(20-bit)m
7(mask)m
8(indicating)m
8(the)m
7(non-zero)m
8(dif)m
(ferences)s
7(followed)m
7(by)m
8(those)m
8(dif)m
(ferences.)s
12(If)m
8(distinct)m
150 2471 p (conversations)s
11(are)m
10(separated,)m
12(this)m
10(is)m
11 r 97 c
11(fairly)m
11(ef)m
(fective)s
10(compression)m
10(scheme)m
11(\(e.g.,)m
11(typically)m
11(12-16)m
11(byte)m
10(headers\))m
150 2516 p (that)s
9(doesn')m
116 c
8(involve)m
9(the)m
9(compressor)m
9(knowing)m
9(any)m
9(details)m
9(of)m
9(the)m
9(packet)m
8(structure.)m
14 r 86 c
-3(ariations)m
8(on)m
9(this)m
9(theme)m
9(have)m
150 2562 p (been)s
9(used,)m
10(successfully)m
-2 r 44 c
9(for)m
9 r 97 c
9(number)m
10(of)m
9(years)m
10(\(e.g.,)m
9(the)m
9(Proteon)m
10(router)m
1 r 39 c
-1 r 115 c
8(serial)m
10(link)m
9(protocol[)m
51 c
(]\).)s
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(6])m
@eop
restore
%%Page: 7 9
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
7 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
150 241 p 26049576 10419828 1315635 28417720 38153420 43218616 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:tcp-ip.comp.model
%%%CreationDate: 9/5/89 6:51 AM
%%%DocumentFonts: Helvetica
%%%+ Helvetica-Bold
%%BoundingBox: 20 432 580 657
%%%Pages:(atend)
%%%EndComments
20 700 translate .75 -.75 scale
/vmstate save def
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag get not}{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{g stroke G
g currentlinewidth D -10 * D /hl x -2 ? /os x 2 * /hw x /bp x /ep x
.2 setlinewidth 0 setlinejoin
g flattenpath {}{}{}{} pathforall
counttomark 8 eq {8 4 roll}i
counttomark 8 gt {count 4 roll mark count 8 - 1 roll cleartomark}i
counttomark 6 eq {6 2 roll 2 copy 8 2 roll}i
counttomark 4 eq {4 copy}i G
N bp {4 2 roll ah}{pop pop pop pop}I ep {ah}{cleartomark mark}I G}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css G}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG cleartomark mark fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/of
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/uf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}b
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
(Helvetica-Bold) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
g 0.000 1 1 0.000 207.500 235.500 fc
newpath
-121.499 -121.499 M
121.499 -121.499 L
121.499 121.499 L
-121.499 121.499 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 522.500 235.500 fc
newpath
-121.500 -121.499 M
121.500 -121.499 L
121.500 121.499 L
-121.500 121.499 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0.000 1 1 0.000 156.199 239.230 fc
newpath
0.000 24.230 M
0.000 -24.230 L
1.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 172.398 226.423 fc
newpath
0.000 24.923 M
0.000 -24.923 L
1.000 setlinewidth 0 SG false true da
G
g 0.000 1 1 0.000 176.898 294.638 fc
newpath
-71.101 -38.024 M
71.101 -38.024 L
71.101 38.024 L
-71.101 38.024 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 176.898 275.282 fc
/myshow /show load def
0 SG
0 4 M
/Helvetica findfont 12 scalefont setfont
{
(saved packet headers) show
}cs
0 -10 M
{
(for \322n\323 connections) show
}cs
G
g 0.000 1 1 0.000 126.517 308.093 fc
newpath
-11.699 -17.549 M
11.699 -17.549 L
11.699 17.549 L
-11.699 17.549 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 155.767 308.093 fc
newpath
-11.699 -17.549 M
11.699 -17.549 L
11.699 17.549 L
-11.699 17.549 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 227.699 308.093 fc
newpath
-11.699 -17.549 M
11.699 -17.549 L
11.699 17.549 L
-11.699 17.549 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 191.549 307.323 fc
/myshow /show load def
0 SG
-1 -4 M
/Helvetica findfont 14 scalefont setfont
{
(. . .) show
}cs
G
g 0.000 1 1 0.000 563.000 240.629 fc
newpath
0.000 24.230 M
0.000 -24.230 L
1.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 579.199 225.122 fc
newpath
0.000 24.923 M
0.000 -24.923 L
1.000 setlinewidth 0 SG false true da
G
g 0.000 1 1 0.000 560.298 292.838 fc
newpath
-69.298 -38.024 M
69.298 -38.024 L
69.298 38.024 L
-69.298 38.024 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 511.699 306.450 fc
newpath
-11.699 -17.549 M
11.699 -17.549 L
11.699 17.549 L
-11.699 17.549 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 540.949 306.450 fc
newpath
-11.699 -17.549 M
11.699 -17.549 L
11.699 17.549 L
-11.699 17.549 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 609.708 308.292 fc
newpath
-11.699 -17.549 M
11.699 -17.549 L
11.699 17.549 L
-11.699 17.549 L
closepath
g 1 SG eofill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 575.649 309.365 fc
/myshow /show load def
0 SG
-1 -4 M
/Helvetica findfont 14 scalefont setfont
{
(. . .) show
}cs
G
g 0.000 1 1 0.000 216.297 186.000 fc
newpath
-22.499 0.000 M
22.499 0.000 L
2.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 355.101 186.000 fc
newpath
-47.699 0.000 M
47.699 0.000 L
2.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 85.500 186.000 fc
newpath
-23.398 0.000 M
23.398 0.000 L
2.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 482.398 186.000 fc
newpath
-31.500 0.000 M
31.500 0.000 L
2.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 630.500 186.000 fc
newpath
-31.500 0.000 M
31.500 0.000 L
2.000 setlinewidth 0 SG true false da
G
g 0.000 1 1 0.000 570.199 186.000 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
44.999 25.615 0 360 a
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -3 M
/Helvetica-Bold findfont 12 scalefont setfont
{
(Decompressor) show
}cs
G
G
g 0.000 1 1 0.000 165.059 184.615 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
44.999 25.615 0 360 a
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 2.000 fc
/myshow /show load def
0 SG
0 -3 M
/Helvetica-Bold findfont 12 scalefont setfont
{
(Compressor) show
}cs
G
G
g 0.000 1 1 0.000 284.762 184.615 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
34.961 34.615 0 360 a
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 3.000 fc
/myshow /show load def
0 SG
0 12 M
/Helvetica-Bold findfont 12 scalefont setfont
{
(framing) show
}cs
0 -2 M
{
(and error) show
}cs
0 -16 M
{
(detection) show
}cs
G
G
g 0.000 1 1 0.000 450.360 184.615 fc
g 0.000 1 1 0.000 0.000 0.000 fc
newpath
34.961 34.615 0 360 a
g 1 SG fill G
1.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 0.000 3.000 fc
/myshow /show load def
0 SG
0 12 M
/Helvetica-Bold findfont 12 scalefont setfont
{
(framing) show
}cs
0 -2 M
{
(and error) show
}cs
0 -16 M
{
(detection) show
}cs
G
G
g 0.000 1 -1 0.000 701.598 188.000 fc
/myshow /show load def
0 SG
0 5 M
/Helvetica-Bold findfont 14 scalefont setfont
{
(TCP/IP) show
}cs
0 -10 M
{
(packet) show
}cs
G
g 0.000 1 -1 0.000 33.800 186.999 fc
/myshow /show load def
0 SG
0 5 M
/Helvetica-Bold findfont 14 scalefont setfont
{
(TCP/IP) show
}cs
0 -10 M
{
(packet) show
}cs
G
g 0.000 1 1 0.000 359.598 186.000 fc
newpath
9.000 -9.000 M
-9.000 9.000 L
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 1 0.000 366.800 186.000 fc
newpath
9.000 -9.000 M
-9.000 9.000 L
2.000 setlinewidth 0 SG stroke
G
g 0.000 1 -1 0.000 312.398 64.500 fc
/myshow /show load def
0 SG
0 10 M
/Helvetica findfont 12 scalefont setfont
{
(Simplex serial link) show
}cs
0 -4 M
{
(\(1/2 of real, full) show
}cs
0 -18 M
{
(duplex link\)) show
}cs
G
g 0.000 1 -1 0.000 147.199 128.398 fc
/myshow /show load def
0 SG
-52 -3 M
/Helvetica findfont 12 scalefont setfont
{
(SLIP Output) show
}ls
G
g 0.000 1 -1 0.000 464.000 128.398 fc
/myshow /show load def
0 SG
-52 -3 M
/Helvetica findfont 12 scalefont setfont
{
(SLIP Input) show
}ls
G
g 0.000 1 1 0.000 369.499 114.898 fc
newpath
-13.499 -49.500 M
13.499 -40.500 L
-4.499 49.500 L
1.000 setlinewidth 0 SG true false da
G
g 0.000 1 -1 0.000 560.101 273.282 fc
/myshow /show load def
0 SG
0 4 M
/Helvetica findfont 12 scalefont setfont
{
(saved packet headers) show
}cs
0 -10 M
{
(for \322n\323 connections) show
}cs
G
%------ End Main Program ------%
end
showpage pop
vmstate restore
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 518 1045 p (Figure)s
11(4:)m
h-med.330 @sf 17(Compression/decompression)m
13(model)m
t-rom.330 @sf 150 1180 p (compression)s
15(is)m
15 r 97 c
16(dif)m
(ferential)s
14(coding,)m
16(the)m
15(framer)m
15(must)m
16(not)m
15(re-order)m
15(packets)m
15(\(this)m
15(is)m
16(rarely)m
150 1236 p 97 c
18(concern)m
18(over)m
18 r 97 c
18(single)m
18(serial)m
18(link\).)m
37(It)m
18(must)m
18(also)m
18(provide)m
t-ita.330 @sf 18(good)m
t-rom.330 @sf 18(error)m
18(detection)m
18(and,)m
20(if)m
150 1293 p (connection)s
11(numbers)m
10(are)m
11(compressed,)m
10(must)m
11(provide)m
10(an)m
11(error)m
11(indication)m
10(to)m
11(the)m
10(decompressor)m
150 1349 p (\(see)s
11(sec.)m
12(4\).)m
t-rom.240 @sf 369 1333 p (10)s
t-rom.330 @sf 221 1412 p (The)s
18(decompressor)m
18(does)m
18 r 97 c
18(`switch')m
18(on)m
18(the)m
18(type)m
18(of)m
18(incoming)m
18(packets:)m
30(For)m
t-romsc.330 @sf 18(type)m
1730 1418 p 23 2 ru
1756 1412 p (ip)s
t-rom.330 @sf 44 c
150 1468 p (the)s
16(packet)m
17(is)m
16(simply)m
17(passed)m
16(through.)m
32(For)m
t-romsc.330 @sf 16(uncompressed)m
1248 1475 p 23 2 ru
1274 1468 p (tcp)s
t-rom.330 @sf 44 c
17(the)m
17(connection)m
16(number)m
150 1525 p (is)s
15(extracted)m
14(from)m
15(the)m
14(IP)m
15(protocol)m
14(\014eld)m
15(and)m
t-romsc.330 @sf 15(ipproto)m
1107 1531 p 23 2 ru
1133 1525 p (tcp)s
t-rom.330 @sf 15(is)m
15(restored,)m
15(then)m
14(the)m
15(connection)m
150 1581 p (number)s
18(is)m
18(used)m
18(as)m
18(an)m
18(index)m
17(into)m
18(the)m
18(receiver)m
2 r 39 c
-2 r 115 c
17(array)m
18(of)m
18(saved)m
18(TCP/IP)m
18(headers)m
18(and)m
18(the)m
150 1638 p (header)s
12(of)m
13(the)m
12(incoming)m
13(packet)m
12(is)m
13(copied)m
12(into)m
13(the)m
12(indexed)m
13(slot.)m
20(For)m
t-romsc.330 @sf 12(compressed)m
1626 1644 p 23 2 ru
1653 1638 p (tcp)s
t-rom.330 @sf 44 c
12(the)m
150 1694 p (connection)s
14(number)m
15(is)m
14(used)m
15(as)m
14(an)m
15(array)m
15(index)m
14(to)m
15(get)m
14(the)m
15(TCP/IP)m
14(header)m
15(of)m
14(the)m
15(last)m
14(packet)m
150 1750 p (from)s
11(that)m
12(connection,)m
11(the)m
11(info)m
12(in)m
11(the)m
11(compressed)m
12(packet)m
11(is)m
11(used)m
12(to)m
11(update)m
11(that)m
12(header)m
-1 r 44 c
10(then)m
150 1807 p 97 c
10(new)m
10(packet)m
9(is)m
10(constructed)m
10(containing)m
10(the)m
10(now-current)m
9(header)m
10(from)m
10(the)m
10(array)m
10(concatenated)m
150 1863 p (with)s
11(the)m
12(data)m
11(from)m
12(the)m
11(compressed)m
12(packet.)m
221 1926 p (Note)s
14(that)m
14(the)m
14(communication)m
14(is)m
t-ita.330 @sf 14(simplex)m
t-rom.330 @sf (|no)s
15(information)m
14(\015ows)m
14(in)m
14(the)m
14(decompressor)m
45 c
150 1983 p (to-compressor)s
9(direction.)m
17(In)m
9(particular)m
-1 r 44 c
9(this)m
9(implies)m
10(that)m
9(the)m
9(decompressor)m
9(is)m
10(relying)m
9(on)m
9(TCP)m
150 2039 p (retransmissions)s
11(to)m
12(correct)m
11(the)m
12(saved)m
11(state)m
12(in)m
11(the)m
12(event)m
11(of)m
12(line)m
11(errors)m
11(\(see)m
12(sec.)m
11(4\).)m
t-bol.330 @sf 150 2170 p (3.2.2)s
46(Compr)m
(essed)s
10(packet)m
12(format)m
t-rom.330 @sf 150 2264 p (Figure)s
14 r 53 c
14(shows)m
13(the)m
14(format)m
14(of)m
14 r 97 c
14(compressed)m
14(TCP/IP)m
13(packet.)m
25(There)m
14(is)m
13 r 97 c
t-ita.330 @sf 14(change)m
14(mask)m
t-rom.330 @sf 14(that)m
150 2320 p (identi\014es)s
10(which)m
11(of)m
10(the)m
11(\014elds)m
10(expected)m
10(to)m
11(change)m
10(per)m
(-packet)s
10(actually)m
10(changed,)m
11 r 97 c
t-ita.330 @sf 10(connection)m
150 2377 p (number)s
t-rom.330 @sf 9(so)m
10(the)m
9(receiver)m
9(can)m
10(locate)m
9(the)m
9(saved)m
10(copy)m
9(of)m
9(the)m
10(last)m
9(packet)m
9(for)m
10(this)m
9(TCP)m
9(connection,)m
150 2419 p 660 2 ru
t-rom.180 @sf 187 2455 p (10)s
t-rom.270 @sf 217 2471 p (Link)s
12(level)m
11(framing)m
11(is)m
11(outside)m
12(the)m
11(scope)m
11(of)m
11(this)m
11(document.)m
20(Any)m
11(framing)m
11(that)m
12(provides)m
11(the)m
11(facilities)m
11(listed)m
150 2516 p (in)s
10(this)m
10(paragraph)m
10(should)m
10(be)m
10(adequate)m
11(for)m
10(the)m
10(compression)m
10(protocol.)m
16(However)m
44 c
9(the)m
10(author)m
10(encourages)m
10(potential)m
150 2562 p (implementors)s
9(to)m
10(see)m
9 r 91 c
57 c
93 c
9(for)m
10 r 97 c
9(proposed,)m
10(standard,)m
9(SLIP)m
9(framing.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(7])m
@eop
restore
%%Page: 8 10
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Courier /c-med.330 ReEncodeForTeX /c-med.330 /c-med.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
8 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
543 241 p 13640502 14208860 2236579 16642785 26312704 41574072 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:tcp-ip.compressed2
%%%CreationDate: 3/11/89 2:18 AM
%%%DocumentFonts: Helvetica
%%%+ Symbol
%%BoundingBox: 34 253 400 632
%%%Pages:(atend)
%%%EndComments
/vmstate save def
0 780 translate 1 -1 scale
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag get not}{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{g stroke G
g currentlinewidth D -10 * D /hl x -2 ? /os x 2 * /hw x /bp x /ep x
.2 setlinewidth 0 setlinejoin
g flattenpath {}{}{}{} pathforall
counttomark 8 eq {8 4 roll}i
counttomark 8 gt {count 4 roll mark count 8 - 1 roll cleartomark}i
counttomark 6 eq {6 2 roll 2 copy 8 2 roll}i
counttomark 4 eq {4 copy}i G
N bp {4 2 roll ah}{pop pop pop pop}I ep {ah}{cleartomark mark}I G}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css G}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG cleartomark mark fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/of
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/uf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}b
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
(Symbol) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
g 0 1 1 0 258 500 fc
newpath
-144 -27 M
144 -27 L
144 27 L
-144 27 L
closepath
g 0.900 SG eofill G
1 setlinewidth 0 SG
0 setlinecap [2] 0 setdash
stroke
G
g 0 1 1 0 258 203 fc
newpath
-144 -18 M
144 -18 L
144 18 L
-144 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG
0 setlinecap [4] 0 setdash
stroke
G
g 0 1 1 0 384 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 258 311 fc
newpath
-144 -18 M
144 -18 L
144 18 L
-144 18 L
closepath
g 1 SG eofill G
1 setlinewidth 0 SG
0 setlinecap [4] 0 setdash
stroke
G
g 0 1 1 0 168 167 fc
newpath
-54 -18 M
54 -18 L
54 18 L
-54 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 240 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 276 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 312 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 348 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 258 257 fc
newpath
-144 -36 M
144 -36 L
144 36 L
-144 36 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 258 347 fc
newpath
-144 -18 M
144 -18 L
144 18 L
-144 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG
0 setlinecap [4] 0 setdash
stroke
G
g 0 1 1 0 258 383 fc
newpath
-144 -18 M
144 -18 L
144 18 L
-144 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG
0 setlinecap [4] 0 setdash
stroke
G
g 0 1 1 0 258 419 fc
newpath
-144 -18 M
144 -18 L
144 18 L
-144 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG
0 setlinecap [4] 0 setdash
stroke
G
g 0 1 1 0 258 455 fc
newpath
-144 -18 M
144 -18 L
144 18 L
-144 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG
0 setlinecap [4] 0 setdash
stroke
G
g 0 1 -1 0 257.999 204.699 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(connection number \(C\)) show
}cs
G
g 0 1 -1 0 258 255.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(TCP checksum) show
}cs
G
g 0 1 -1 0 257.999 348.500 fc
/myshow /show load def
0 SG
0 -4 M
/Symbol findfont 18 scalefont setfont
{
(D) show
/Helvetica findfont 18 scalefont setfont
( window \(W\)) show
}cs
G
g 0 1 -1 0 257.999 312.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(urgent pointer \(U\)) show
}cs
G
g 0 1 -1 0 258 384.500 fc
/myshow /show load def
0 SG
0 -4 M
/Symbol findfont 18 scalefont setfont
{
(D) show
/Helvetica findfont 18 scalefont setfont
( ack \(A\)) show
}cs
G
g 0 1 -1 0 258 420.500 fc
/myshow /show load def
0 SG
0 -4 M
/Symbol findfont 18 scalefont setfont
{
(D) show
/Helvetica findfont 18 scalefont setfont
( sequence \(S\)) show
}cs
G
g 0 1 -1 0 258 456.500 fc
/myshow /show load def
0 SG
0 -4 M
/Symbol findfont 18 scalefont setfont
{
(D) show
/Helvetica findfont 18 scalefont setfont
( IP ID \(I\)) show
}cs
G
g 0 1 -1 0 258 492.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(data) show
}cs
G
g 0 1 -1 0 239.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(P) show
}cs
G
g 0 1 1 0 204 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 -1 0 203.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(I) show
}cs
G
g 0 1 1 0 168 167 fc
newpath
-18 -18 M
18 -18 L
18 18 L
-18 18 L
closepath
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 -1 0 167.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(C) show
}cs
G
g 0 1 -1 0 94 168.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(Byte 0) show
}rs
G
g 0 1 -1 0 94 204.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(1) show
}rs
G
g 0 1 -1 0 94 240.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(2) show
}rs
G
g 0 1 -1 0 94 276.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(3) show
}rs
G
g 0 1 -1 0 94 312.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(4) show
}rs
G
g 0 1 -1 270 86 335.500 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 24 scalefont setfont
{
(. . .) show
}rs
G
g 0 1 -1 0 55.300 492.496 fc
/myshow /show load def
0 SG
48 -5 M
/Helvetica findfont 18 scalefont setfont
{
(3 ) show
/Symbol findfont 18 scalefont setfont
(\243) show
/Helvetica findfont 18 scalefont setfont
( n ) show
/Symbol findfont 18 scalefont setfont
(\243) show
/Helvetica findfont 18 scalefont setfont
( 16) show
}rs
G
g 0 1 -1 0 275.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(S) show
}cs
G
g 0 1 -1 0 311.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(A) show
}cs
G
g 0 1 -1 0 347.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(W) show
}cs
G
g 0 1 -1 0 383.999 170.199 fc
/myshow /show load def
0 SG
0 -7 M
/Helvetica findfont 24 scalefont setfont
{
(U) show
}cs
G
g 0 1 1 0 330 167 fc
newpath
72 -18 M
-72 -18 L
-72 18 L
72 18 L
closepath
2 setlinewidth 0 SG stroke
G
%------ End Main Program ------%
end
vmstate restore
showpage pop
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 407 1285 p (Figure)s
11(5:)m
h-med.330 @sf 17(The)m
13(header)m
13(of)m
13 r 97 c
12(compressed)m
13(TCP/IP)m
13(datagram)m
t-rom.330 @sf 150 1419 p (the)s
15(unmodi\014ed)m
15(TCP)m
16(checksum)m
15(so)m
15(the)m
15(end-to-end)m
15(data)m
16(integrity)m
15(check)m
15(will)m
15(still)m
15(be)m
15(valid,)m
150 1475 p (then)s
9(for)m
9(each)m
10(bit)m
9(set)m
9(in)m
9(the)m
9(change)m
9(mask,)m
10(the)m
9(amount)m
9(the)m
10(associated)m
9(\014eld)m
9(changed.)m
16(\(Optional)m
150 1532 p (\014elds,)s
12(controlled)m
13(by)m
12(the)m
12(mask,)m
13(are)m
12(enclosed)m
12(in)m
12(dashed)m
13(lines)m
12(in)m
12(the)m
12(\014gure.\))m
20(In)m
12(all)m
13(cases,)m
12(the)m
150 1588 p (bit)s
11(is)m
12(set)m
11(if)m
12(the)m
11(associated)m
12(\014eld)m
11(is)m
12(present)m
11(and)m
12(clear)m
11(if)m
11(the)m
12(\014eld)m
11(is)m
12(absent.)m
t-rom.240 @sf 1452 1572 p 49 c
-1 r 49 c
t-rom.330 @sf 221 1650 p (Since)s
16(the)m
17(delta')m
-1 r 115 c
15(in)m
17(the)m
17(sequence)m
17(number)m
-1 r 44 c
17(etc.,)m
18(are)m
17(usually)m
16(small,)m
18(particularly)m
17(if)m
17(the)m
150 1707 p (tuning)s
9(guidelines)m
9(in)m
10(section)m
9 r 53 c
9(are)m
9(followed,)m
10(all)m
9(the)m
10(numbers)m
9(are)m
9(encoded)m
9(in)m
10 r 97 c
9(variable)m
9(length)m
150 1763 p (scheme)s
11(that,)m
11(in)m
11(practice,)m
11(handles)m
11(most)m
11(traf)m
(\014c)s
11(with)m
11(eight)m
11(bits:)m
17 r 65 c
11(change)m
11(of)m
11(one)m
11(through)m
11(255)m
150 1820 p (is)s
14(represented)m
14(in)m
14(one)m
13(byte.)m
25(Zero)m
14(is)m
14(improbable)m
13(\(a)m
14(change)m
14(of)m
14(zero)m
14(is)m
14(never)m
14(sent\))m
13(so)m
14 r 97 c
14(byte)m
150 1876 p (of)s
12(zero)m
12(signals)m
12(an)m
12(extension:)m
19(The)m
12(next)m
12(two)m
12(bytes)m
12(are)m
12(the)m
12(MSB)m
12(and)m
12(LSB,)m
12(respectively)m
-2 r 44 c
11(of)m
12 r 97 c
150 1933 p (16)s
14(bit)m
14(value.)m
25(Numbers)m
14(lar)m
(ger)s
13(than)m
14(16)m
15(bits)m
14(force)m
14(an)m
14(uncompressed)m
14(packet)m
14(to)m
14(be)m
14(sent.)m
25(For)m
150 1989 p (example,)s
11(decimal)m
10(15)m
10(is)m
11(encoded)m
10(as)m
10(hex)m
c-med.330 @sf 11(0f)m
t-rom.330 @sf 44 c
10(255)m
11(as)m
c-med.330 @sf 10(ff)m
t-rom.330 @sf 44 c
10(65534)m
11(as)m
c-med.330 @sf 10(00)m
10(ff)m
11(fe)m
t-rom.330 @sf 44 c
10(and)m
11(zero)m
10(as)m
c-med.330 @sf 10(00)m
150 2046 p (00)s
12(00)m
t-rom.330 @sf 46 c
19(This)m
12(scheme)m
12(packs)m
12(and)m
13(decodes)m
12(fairly)m
12(ef)m
(\014ciently:)s
17(The)m
13(usual)m
12(case)m
12(for)m
12(both)m
12(encode)m
150 2102 p (and)s
11(decode)m
12(executes)m
11(three)m
12(instructions)m
11(on)m
12 r 97 c
11(MC680x0.)m
221 2164 p (The)s
11(numbers)m
12(sent)m
12(for)m
12(TCP)m
12(sequence)m
12(number)m
11(and)m
12(ack)m
12(are)m
12(the)m
12(dif)m
(ference)s
t-rom.240 @sf 1529 2148 p (12)s
t-rom.330 @sf 1579 2164 p (between)s
12(the)m
150 2221 p (current)s
13(value)m
14(and)m
13(the)m
14(value)m
13(in)m
14(the)m
13(previous)m
13(packet)m
14(\(an)m
13(uncompressed)m
14(packet)m
13(is)m
14(sent)m
13(if)m
14(the)m
150 2277 p (dif)s
(ference)s
16(is)m
18(negative)m
17(or)m
17(more)m
18(than)m
17(64K\).)m
17(The)m
18(number)m
17(sent)m
17(for)m
18(the)m
17(window)m
17(is)m
17(also)m
18(the)m
150 2318 p 660 2 ru
t-rom.180 @sf 188 2354 p 49 c
49 c
t-rom.270 @sf 217 2370 p (The)s
10(bit)m
10(`P')m
10(in)m
10(the)m
10(\014gure)m
10(is)m
10(dif)m
(ferent)s
9(from)m
10(the)m
10(others:)m
15(It)m
10(is)m
10 r 97 c
10(copy)m
10(of)m
10(the)m
10(\\PUSH")m
10(bit)m
10(from)m
10(the)m
10(TCP)m
10(header)m
-1 r 46 c
150 2416 p (\\PUSH")s
12(is)m
13 r 97 c
12(curious)m
13(anachronism)m
12(considered)m
13(indispensable)m
12(by)m
13(certain)m
12(members)m
13(of)m
12(the)m
13(Internet)m
12(community)m
-1 r 46 c
150 2461 p (Since)s
8(PUSH)m
8(can)m
8(\(and)m
9(does\))m
8(change)m
8(in)m
8(any)m
8(datagram,)m
8(an)m
9(information)m
8(preserving)m
8(compression)m
8(scheme)m
8(must)m
8(pass)m
150 2507 p (it)s
9(explicitly)m
-1 r 46 c
t-rom.180 @sf 187 2546 p (12)s
t-rom.270 @sf 217 2562 p (All)s
10(dif)m
(ferences)s
9(are)m
9(computed)m
9(using)m
10(two')m
-1 r 115 c
8(complement)m
9(arithmetic.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(8])m
@eop
restore
%%Page: 9 11
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Courier /c-med.330 ReEncodeForTeX /c-med.330 /c-med.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-SmallCaps /t-romsc.270 ReEncodeForTeX /t-romsc.270 /t-romsc.270 37.499947 TeXPSmakefont def
9 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 150 233 p (dif)s
(ference)s
12(between)m
13(the)m
13(current)m
14(and)m
13(previous)m
13(values.)m
22(However)m
-1 r 44 c
12(either)m
14(positive)m
13(or)m
13(negative)m
150 289 p (changes)s
12(are)m
11(allowed)m
12(since)m
12(the)m
11(window)m
12(is)m
12 r 97 c
12(16)m
11(bit)m
12(\014eld.)m
18(The)m
12(packet')m
-2 r 115 c
11(ur)m
(gent)s
11(pointer)m
11(is)m
12(sent)m
150 346 p (if)s
15(URG)m
14(is)m
15(set)m
15(\(an)m
15(uncompressed)m
14(packet)m
15(is)m
15(sent)m
14(if)m
15(the)m
15(ur)m
(gent)s
14(pointer)m
14(changes)m
15(but)m
15(URG)m
14(is)m
150 402 p (not)s
11(set\).)m
17(For)m
t-ita.330 @sf 10(packet)m
11(ID)m
t-rom.330 @sf 44 c
11(the)m
10(number)m
11(sent)m
11(is)m
11(the)m
10(dif)m
(ference)s
10(between)m
11(the)m
11(current)m
10(and)m
11(previous)m
150 458 p (values.)s
23(However)m
-1 r 44 c
13(unlike)m
13(the)m
13(rest)m
14(of)m
13(the)m
13(compressed)m
14(\014elds,)m
13(the)m
14(assumed)m
13(change)m
13(when)m
t-ita.330 @sf 14 r 73 c
t-rom.330 @sf 13(is)m
150 515 p (clear)s
11(is)m
12(one,)m
11(not)m
12(zero.)m
221 574 p (There)s
11(are)m
11(two)m
12(important)m
11(special)m
12(cases:)m
187 654 p (\(1\))s
23(The)m
12(sequence)m
11(number)m
12(and)m
12(ack)m
11(both)m
12(change)m
12(by)m
11(the)m
12(amount)m
11(of)m
12(data)m
12(in)m
11(the)m
12(last)m
12(packet;)m
264 711 p (no)s
11(window)m
12(change)m
11(or)m
11(URG.)m
187 798 p (\(2\))s
23(The)m
15(sequence)m
15(number)m
14(changes)m
15(by)m
15(the)m
14(amount)m
15(of)m
15(data)m
15(in)m
14(the)m
15(last)m
15(packet,)m
15(no)m
15(ack)m
15(or)m
264 855 p (window)s
11(change)m
12(or)m
11(URG.)m
150 935 p (\(1\))s
15(is)m
15(the)m
15(case)m
15(for)m
15(echoed)m
15(terminal)m
15(traf)m
(\014c.)s
26(\(2\))m
15(is)m
15(the)m
15(sender)m
15(side)m
15(of)m
15(non-echoed)m
15(terminal)m
150 992 p (traf)s
(\014c)s
14(or)m
15 r 97 c
15(unidirectional)m
15(data)m
15(transfer)m
-2 r 46 c
27(Certain)m
15(combinations)m
15(of)m
15(the)m
15(S,)m
15(A,)m
14 r 87 c
15(and)m
15 r 85 c
15(bits)m
150 1048 p (of)s
12(the)m
13(change)m
12(mask)m
12(are)m
12(used)m
13(to)m
12(signal)m
12(these)m
13(special)m
12(cases.)m
20(`U')m
12(\(ur)m
(gent)s
11(data\))m
13(is)m
12(rare)m
12(so)m
13(two)m
150 1105 p (unlikely)s
9(combinations)m
10(are)m
9 r 83 c
9 r 87 c
10 r 85 c
9(\(used)m
9(for)m
9(case)m
10(1\))m
9(and)m
9 r 83 c
10 r 65 c
9 r 87 c
9 r 85 c
10(\(used)m
9(for)m
9(case)m
9(2\).)m
17 r 84 c
-2 r 111 c
8(avoid)m
150 1161 p (ambiguity)s
-2 r 44 c
10(an)m
12(uncompressed)m
11(packet)m
12(is)m
11(sent)m
12(if)m
11(the)m
12(actual)m
11(changes)m
12(in)m
11 r 97 c
12(packet)m
11(are)m
11 r 83 c
12 r 42 c
11 r 87 c
12(U.)m
221 1220 p (Since)s
12(the)m
12(`active')m
12(connection)m
12(changes)m
12(rarely)m
12(\(e.g.,)m
13 r 97 c
12(user)m
12(will)m
12(type)m
12(for)m
12(several)m
12(minutes)m
150 1276 p (in)s
11 r 97 c
10(telnet)m
11(window)m
11(before)m
10(changing)m
11(to)m
11 r 97 c
10(dif)m
(ferent)s
10(window\),)m
11(the)m
11 r 67 c
10(bit)m
11(allows)m
11(the)m
10(connection)m
150 1333 p (number)s
16(to)m
15(be)m
16(elided.)m
29(If)m
16 r 67 c
15(is)m
16(clear)m
-1 r 44 c
16(the)m
15(connection)m
16(is)m
15(assumed)m
16(to)m
15(be)m
16(the)m
15(same)m
16(as)m
16(for)m
15(the)m
150 1389 p (last)s
12(compressed)m
12(or)m
12(uncompressed)m
12(packet.)m
18(If)m
12 r 67 c
12(is)m
12(set,)m
12(the)m
12(connection)m
12(number)m
12(is)m
12(in)m
12(the)m
12(byte)m
150 1446 p (immediately)s
11(following)m
12(the)m
11(change)m
12(mask.)m
t-rom.240 @sf 900 1429 p (13)s
t-rom.330 @sf 221 1504 p (From)s
14(the)m
15(above,)m
15(it')m
-2 r 115 c
14(probably)m
15(obvious)m
14(that)m
15(compressed)m
14(terminal)m
15(traf)m
(\014c)s
13(usually)m
15(looks)m
150 1561 p (like)s
11(\(in)m
10(hex\):)m
c-med.330 @sf 17(0B)m
11 r 99 c
10 r 99 c
11 r 100 c
t-rom.330 @sf 44 c
11(where)m
10(the)m
t-ita.330 @sf 11(0B)m
t-rom.330 @sf 11(indicates)m
10(case)m
11(\(1\),)m
t-ita.330 @sf 11 r 99 c
10 r 99 c
t-rom.330 @sf 11(is)m
11(the)m
10(two)m
11(byte)m
11(TCP)m
10(checksum)m
150 1617 p (and)s
t-ita.330 @sf 16 r 100 c
t-rom.330 @sf 16(is)m
15(the)m
16(character)m
16(typed.)m
30(Commands)m
16(to)m
t-ita.330 @sf 15(vi)m
t-rom.330 @sf 16(or)m
t-ita.330 @sf 16(emacs)m
t-rom.330 @sf 44 c
17(or)m
16(packets)m
15(in)m
16(the)m
16(data)m
16(transfer)m
150 1674 p (direction)s
13(of)m
12(an)m
13(FTP)m
12(`put')m
13(or)m
12(`get')m
13(look)m
12(like)m
c-med.330 @sf 13(0F)m
12 r 99 c
13 r 99 c
13 r 100 c
t-rom.330 @sf 15 r 46 c
8 r 46 c
7 r 46 c
11 r 44 c
13(and)m
12(acks)m
13(for)m
13(that)m
12(FTP)m
13(look)m
12(like)m
c-med.330 @sf 150 1730 p (04)s
11 r 99 c
12 r 99 c
11 r 97 c
t-rom.330 @sf 12(where)m
t-ita.330 @sf 11 r 97 c
t-rom.330 @sf 12(is)m
11(the)m
12(amount)m
11(of)m
12(data)m
11(being)m
11(acked.)m
t-rom.240 @sf 1122 1714 p (14)s
t-bol.330 @sf 150 1852 p (3.2.3)s
46(Compr)m
(essor)s
10(pr)m
(ocessing)s
t-rom.330 @sf 150 1942 p (The)s
17(compressor)m
16(is)m
17(called)m
16(with)m
17(the)m
16(IP)m
17(packet)m
17(to)m
16(be)m
17(processed)m
16(and)m
17(the)m
16(compression)m
17(state)m
150 1998 p (structure)s
10(for)m
10(the)m
10(outgoing)m
10(serial)m
10(line.)m
17(It)m
10(returns)m
10 r 97 c
10(packet)m
10(ready)m
10(for)m
10(\014nal)m
10(framing)m
10(and)m
10(the)m
10(link)m
150 2055 p (level)s
11(`type')m
12(of)m
11(that)m
12(packet.)m
150 2089 p 660 2 ru
t-rom.180 @sf 187 2126 p (13)s
t-rom.270 @sf 217 2142 p (The)s
13(connection)m
13(number)m
12(is)m
13(limited)m
12(to)m
13(one)m
12(byte,)m
13(i.e.,)m
14(256)m
12(simultaneously)m
13(active)m
12(TCP)m
13(connections.)m
23(In)m
13(al-)m
150 2187 p (most)s
15(two)m
14(years)m
15(of)m
14(operation,)m
16(the)m
15(author)m
14(has)m
15(never)m
15(seen)m
14 r 97 c
15(case)m
14(where)m
15(more)m
15(than)m
14(sixteen)m
15(connection)m
14(states)m
150 2233 p (would)s
13(be)m
12(useful)m
13(\(even)m
12(in)m
13(one)m
12(case)m
13(where)m
12(the)m
13(SLIP)m
12(link)m
13(was)m
13(used)m
12(as)m
13 r 97 c
12(gateway)m
13(behind)m
12 r 97 c
13(very)m
12(busy)m
-1 r 44 c
12(64-port)m
150 2279 p (terminal)s
11(multiplexor\).)m
19(Thus)m
11(this)m
12(does)m
11(not)m
11(seem)m
11(to)m
11(be)m
11 r 97 c
11(signi\014cant)m
11(restriction)m
11(and)m
12(allows)m
11(the)m
11(protocol)m
11(\014eld)m
11(in)m
t-romsc.270 @sf 150 2324 p (uncompressed)s
393 2331 p 19 2 ru
415 2324 p (tcp)s
t-rom.270 @sf 7(packets)m
7(to)m
7(be)m
6(used)m
7(for)m
7(the)m
7(connection)m
7(number)m
-1 r 44 c
7(simplifying)m
6(the)m
7(processing)m
7(of)m
7(those)m
7(packets.)m
t-rom.180 @sf 187 2364 p (14)s
t-rom.270 @sf 217 2379 p (It')s
-1 r 115 c
9(also)m
9(obvious)m
9(that)m
10(the)m
9(change)m
9(mask)m
10(changes)m
9(infrequently)m
9(and)m
10(could)m
9(often)m
9(be)m
10(elided.)m
14(In)m
9(fact,)m
9(one)m
10(can)m
9(do)m
150 2425 p (slightly)s
12(better)m
11(by)m
12(saving)m
11(the)m
12(last)m
11(compressed)m
12(packet)m
11(\(it)m
12(can)m
12(be)m
11(at)m
12(most)m
11(16)m
12(bytes)m
11(so)m
12(this)m
11(isn')m
116 c
11(much)m
12(additional)m
150 2471 p (state\))s
10(and)m
10(checking)m
10(to)m
10(see)m
10(if)m
10(any)m
10(of)m
10(it)m
10(\(except)m
10(the)m
9(TCP)m
10(checksum\))m
10(has)m
10(changed.)m
16(If)m
10(not,)m
10(send)m
10 r 97 c
10(packet)m
10(type)m
10(that)m
150 2516 p (means)s
11(\\compressed)m
10(TCP)m
-3 r 44 c
9(same)m
11(as)m
11(last)m
10(time")m
11(and)m
10 r 97 c
11(packet)m
10(containing)m
11(only)m
10(the)m
11(checksum)m
11(and)m
10(data.)m
18(But,)m
11(since)m
150 2562 p (the)s
9(improvement)m
10(is)m
9(at)m
9(most)m
10(25%,)m
9(the)m
10(added)m
9(complexity)m
9(and)m
10(state)m
9(doesn')m
116 c
9(seem)m
9(justi\014ed.)m
14(See)m
10(appendix)m
9(C.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1357([Page)m
11(9])m
@eop
restore
%%Page: 10 12
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 18 -3 -2 22.727] 15 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-SmallCaps /t-romsc.270 ReEncodeForTeX /t-romsc.270 /t-romsc.270 37.499947 TeXPSmakefont def
10 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 221 233 p (As)s
17(the)m
18(last)m
18(section)m
17(noted,)m
20(the)m
17(compressor)m
18(converts)m
18(every)m
17(input)m
18(packet)m
18(into)m
17(either)m
18 r 97 c
t-romsc.330 @sf 150 289 p (type)s
245 296 p 23 2 ru
271 289 p (ip)s
t-rom.330 @sf 44 c
t-romsc.330 @sf 14(uncompressed)m
626 296 p 23 2 ru
652 289 p (tcp)s
t-rom.330 @sf 13(or)m
t-romsc.330 @sf 14(compressed)m
1028 296 p 23 2 ru
1054 289 p (tcp)s
t-rom.330 @sf 14(packet.)m
24 r 65 c
t-romsc.330 @sf 14(type)m
1432 296 p 23 2 ru
1458 289 p (ip)s
t-rom.330 @sf 14(packet)m
13(is)m
14(an)m
14(un-)m
150 346 p (modi\014ed)s
9(copy)m
t-rom.240 @sf 414 329 p (15)s
t-rom.330 @sf 461 346 p (of)s
9(the)m
8(input)m
9(packet)m
9(and)m
9(processing)m
8(it)m
9(doesn')m
116 c
8(change)m
9(the)m
8(compressor)m
2 r 39 c
-2 r 115 c
8(state)m
150 402 p (in)s
11(any)m
12(way)m
-2 r 46 c
221 462 p (An)s
t-romsc.330 @sf 12(uncompressed)m
585 469 p 23 2 ru
611 462 p (tcp)s
t-rom.330 @sf 13(packet)m
12(is)m
12(identical)m
13(to)m
12(the)m
12(input)m
12(packet)m
13(except)m
12(the)m
t-ita.330 @sf 12(IP)m
13(pr)m
-1(otocol)m
t-rom.330 @sf 150 519 p (\014eld)s
16(\(byte)m
15(9\))m
16(is)m
16(changed)m
16(from)m
15(`6')m
16(\(protocol)m
16(TCP\))m
16(to)m
15 r 97 c
t-ita.330 @sf 16(connection)m
16(number)m
t-rom.330 @sf 46 c
30(In)m
15(addition,)m
150 575 p (the)s
15(state)m
15(slot)m
14(associated)m
15(with)m
15(the)m
15(connection)m
14(number)m
15(is)m
15(updated)m
15(with)m
15 r 97 c
14(copy)m
15(of)m
15(the)m
15(input)m
150 632 p (packet')s
-2 r 115 c
10(IP)m
11(and)m
11(TCP)m
11(headers)m
11(and)m
11(the)m
11(connection)m
11(number)m
11(is)m
11(recorded)m
11(as)m
11(the)m
t-ita.330 @sf 11(last)m
11(connection)m
150 688 p (sent)s
t-rom.330 @sf 11(on)m
12(this)m
11(serial)m
12(line)m
11(\(for)m
12(the)m
11 r 67 c
12(compression)m
11(described)m
12(below\).)m
221 749 p 65 c
t-romsc.330 @sf 18(compressed)m
516 755 p 23 2 ru
542 749 p (tcp)s
t-rom.330 @sf 18(packet)m
19(contains)m
18(the)m
18(data,)m
21(if)m
18(any)m
-2 r 44 c
19(from)m
19(the)m
18(original)m
19(packet)m
18(but)m
150 805 p (the)s
17(IP)m
17(and)m
18(TCP)m
17(headers)m
17(are)m
17(completely)m
18(replaced)m
17(with)m
17 r 97 c
17(new)m
-2 r 44 c
18(compressed)m
17(header)m
-1 r 46 c
33(The)m
150 862 p (connection)s
10(state)m
10(slot)m
10(and)m
t-ita.330 @sf 10(last)m
10(connection)m
10(sent)m
t-rom.330 @sf 10(are)m
10(updated)m
10(by)m
10(the)m
10(input)m
10(packet)m
10(exactly)m
10(as)m
11(for)m
150 918 p (an)s
t-romsc.330 @sf 11(uncompressed)m
501 925 p 23 2 ru
527 918 p (tcp)s
t-rom.330 @sf 12(packet.)m
221 979 p (The)s
11(compressor)m
2 r 39 c
-2 r 115 c
11(decision)m
11(procedure)m
12(is:)m
cmsy10.329 @sf 215 1069 p 15 c
t-rom.330 @sf 26(If)m
11(the)m
12(packet)m
11(is)m
12(not)m
11(protocol)m
12(TCP)m
-4 r 44 c
10(send)m
11(it)m
12(as)m
t-romsc.330 @sf 11(type)m
1159 1076 p 23 2 ru
1185 1069 p (ip)s
t-rom.330 @sf 46 c
cmsy10.329 @sf 215 1160 p 15 c
t-rom.330 @sf 26(If)m
11(the)m
11(packet)m
10(is)m
11(an)m
11(IP)m
11(fragment)m
11(\(i.e.,)m
11(either)m
10(the)m
t-ita.330 @sf 11(fragment)m
11(offset)m
t-rom.330 @sf 11(\014eld)m
11(is)m
10(non-zero)m
11(or)m
11(the)m
t-ita.330 @sf 264 1216 p (mor)s
-1 r 101 c
10(fragments)m
t-rom.330 @sf 12(bit)m
11(is)m
12(set\),)m
11(send)m
12(it)m
11(as)m
t-romsc.330 @sf 12(type)m
1030 1223 p 23 2 ru
1056 1216 p (ip)s
t-rom.330 @sf 46 c
t-rom.240 @sf 1103 1200 p (16)s
cmsy10.329 @sf 215 1307 p 15 c
t-rom.330 @sf 26(If)m
15(any)m
15(of)m
16(the)m
15(TCP)m
15(control)m
16(bits)m
t-ita.330 @sf 15(SYN,)m
15(FIN)m
t-rom.330 @sf 16(or)m
t-ita.330 @sf 15(RST)m
t-rom.330 @sf 15(are)m
15(set)m
16(or)m
15(if)m
15(the)m
t-ita.330 @sf 16(ACK)m
t-rom.330 @sf 15(bit)m
15(is)m
16(clear)m
-1 r 44 c
264 1363 p (consider)s
11(the)m
12(packet)m
11(uncompressible)m
11(and)m
12(send)m
11(it)m
12(as)m
t-romsc.330 @sf 11(type)m
1283 1370 p 23 2 ru
1309 1363 p (ip)s
t-rom.330 @sf 46 c
t-rom.240 @sf 1356 1347 p (17)s
t-rom.330 @sf 150 1454 p (If)s
10 r 97 c
9(packet)m
10(makes)m
10(it)m
10(through)m
9(the)m
10(above)m
10(checks,)m
10(it)m
10(will)m
10(be)m
9(sent)m
10(as)m
10(either)m
t-romsc.330 @sf 9(uncompressed)m
1707 1460 p 23 2 ru
1733 1454 p (tcp)s
t-rom.330 @sf 150 1510 p (or)s
t-romsc.330 @sf 11(compressed)m
443 1517 p 23 2 ru
469 1510 p (tcp)s
t-rom.330 @sf 58 c
cmsy10.329 @sf 215 1610 p 15 c
t-rom.330 @sf 26(If)m
11(no)m
12(connection)m
11(state)m
12(can)m
11(be)m
12(found)m
11(that)m
12(matches)m
11(the)m
11(packet')m
-1 r 115 c
10(source)m
12(and)m
11(destination)m
264 1666 p (IP)s
12(addresses)m
13(and)m
12(TCP)m
13(ports,)m
12(some)m
13(state)m
12(is)m
13(reclaimed)m
12(\(which)m
13(should)m
12(probably)m
13(be)m
12(the)m
264 1723 p (least)s
11(recently)m
12(used\))m
11(and)m
11(an)m
t-romsc.330 @sf 12(uncompressed)m
1058 1729 p 23 2 ru
1084 1723 p (tcp)s
t-rom.330 @sf 11(packet)m
12(is)m
11(sent.)m
150 1760 p 660 2 ru
t-rom.180 @sf 187 1797 p (15)s
t-rom.270 @sf 217 1812 p (It)s
12(is)m
12(not)m
11(necessary)m
12(\(or)m
12(desirable\))m
11(to)m
12(actually)m
11(duplicate)m
12(the)m
12(input)m
11(packet)m
12(for)m
11(any)m
12(of)m
12(the)m
11(three)m
12(output)m
11(types.)m
150 1858 p (Note)s
8(that)m
7(the)m
8(compressor)m
8(cannot)m
7(increase)m
8(the)m
8(size)m
8(of)m
7 r 97 c
8(datagram.)m
14(As)m
7(the)m
8(code)m
8(in)m
7(appendix)m
8 r 65 c
8(shows,)m
8(the)m
7(protocol)m
150 1904 p (can)s
9(be)m
10(implemented)m
9(so)m
9(all)m
10(header)m
9(modi\014cations)m
10(are)m
9(made)m
9(`in)m
10(place'.)m
t-rom.180 @sf 187 1943 p (16)s
t-rom.270 @sf 217 1959 p (Only)s
15(the)m
15(\014rst)m
14(fragment)m
15(contains)m
14(the)m
15(TCP)m
14(header)m
15(so)m
14(the)m
15(fragment)m
14(of)m
(fset)s
14(check)m
15(is)m
14(necessary)m
-1 r 46 c
28(The)m
15(\014rst)m
150 2005 p (fragment)s
13(might)m
13(contain)m
13 r 97 c
13(complete)m
13(TCP)m
13(header)m
13(and,)m
14(thus,)m
14(could)m
13(be)m
13(compressed.)m
25(However)m
13(the)m
13(check)m
13(for)m
13 r 97 c
150 2050 p (complete)s
10(TCP)m
10(header)m
10(adds)m
11(quite)m
10 r 97 c
10(lot)m
10(of)m
10(code)m
10(and,)m
11(given)m
10(the)m
10(ar)m
(guments)s
9(in)m
10 r 91 c
54 c
(],)s
11(it)m
10(seems)m
10(reasonable)m
10(to)m
10(send)m
10(all)m
150 2096 p (IP)s
9(fragments)m
10(uncompressed.)m
t-rom.180 @sf 187 2135 p (17)s
t-rom.270 @sf 217 2151 p (The)s
8(ACK)m
7(test)m
7(is)m
8(redundant)m
7(since)m
7 r 97 c
7(standard)m
8(conforming)m
7(implementation)m
7(must)m
7(set)m
8(ACK)m
7(in)m
7(all)m
7(packets)m
8(except)m
150 2197 p (for)s
9(the)m
9(initial)m
10(SYN)m
9(packet.)m
14(However)m
-1 r 44 c
9(the)m
9(test)m
9(costs)m
9(nothing)m
9(and)m
10(avoids)m
9(turning)m
9 r 97 c
9(bogus)m
9(packet)m
10(into)m
9 r 97 c
9(valid)m
9(one.)m
187 2243 p (SYN)s
14(packets)m
13(are)m
14(not)m
13(compressed)m
14(because)m
13(only)m
14(half)m
13(of)m
14(them)m
13(contain)m
14 r 97 c
13(valid)m
14(ACK)m
13(\014eld)m
14(and)m
13(they)m
14(usually)m
150 2288 p (contain)s
10 r 97 c
9(TCP)m
10(option)m
10(\(the)m
9(max.)m
10(segment)m
10(size\))m
9(which)m
10(the)m
10(following)m
9(packets)m
10(don')m
(t.)s
14(Thus)m
10(the)m
10(next)m
9(packet)m
10(would)m
150 2334 p (be)s
10(sent)m
11(uncompressed)m
10(because)m
10(the)m
11(TCP)m
10(header)m
10(length)m
11(changed)m
10(and)m
10(sending)m
11(the)m
10(SYN)m
10(as)m
t-romsc.270 @sf 11(uncompressed)m
1723 2340 p 19 2 ru
1745 2334 p (tcp)s
t-rom.270 @sf 150 2379 p (instead)s
9(of)m
t-romsc.270 @sf 10(type)m
384 2386 p 19 2 ru
406 2379 p (ip)s
t-rom.270 @sf 10(would)m
9(buy)m
9(nothing.)m
187 2425 p (The)s
10(decision)m
10(to)m
10(not)m
9(compress)m
10(FIN)m
10(packets)m
9(is)m
10(questionable.)m
15(Discounting)m
10(the)m
9(trick)m
10(in)m
10(appendix)m
9(B.1,)m
10(there)m
10(is)m
9 r 97 c
150 2471 p (free)s
9(bit)m
10(in)m
9(the)m
10(header)m
9(that)m
9(could)m
10(be)m
9(used)m
9(to)m
10(communicate)m
9(the)m
10(FIN)m
9(\015ag.)m
14(However)m
44 c
8(since)m
9(connections)m
10(tend)m
9(to)m
10(last)m
150 2516 p (for)s
10(many)m
9(packets,)m
10(it)m
9(seemed)m
10(unreasonable)m
9(to)m
10(dedicate)m
9(an)m
10(entire)m
9(bit)m
10(to)m
10 r 97 c
9(\015ag)m
10(that)m
9(would)m
10(only)m
9(appear)m
10(once)m
9(in)m
10(the)m
150 2562 p (lifetime)s
9(of)m
10(the)m
9(connection.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(10])m
@eop
restore
%%Page: 11 13
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 18 -3 -2 22.727] 15 @dc
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
[<FFFFFFC0FFFFFFC0> 32 2 -4 -10 35.353] 0 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
11 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
cmsy10.329 @sf 215 233 p 15 c
t-rom.330 @sf 26(If)m
15 r 97 c
15(connection)m
14(state)m
15(is)m
15(found,)m
16(the)m
15(packet)m
15(header)m
14(it)m
15(contains)m
15(is)m
15(checked)m
15(against)m
15(the)m
264 289 p (current)s
15(packet)m
15(to)m
15(make)m
15(sure)m
15(there)m
15(were)m
15(no)m
15(unexpected)m
16(changes.)m
28(\(E.g.,)m
16(that)m
15(all)m
15(the)m
264 346 p (shaded)s
7(\014elds)m
7(in)m
8(\014g.)m
7 r 51 c
7(are)m
8(the)m
7(same\).)m
16(The)m
7(IP)m
7(protocol,)m
9(fragment)m
7(of)m
(fset,)s
7(more)m
8(fragments,)m
264 402 p (SYN,)s
8(FIN)m
9(and)m
9(RST)m
9(\014elds)m
9(were)m
9(checked)m
8(above)m
9(and)m
9(the)m
9(source)m
9(and)m
8(destination)m
9(address)m
264 458 p (and)s
10(ports)m
10(were)m
10(checked)m
11(as)m
10(part)m
10(of)m
10(locating)m
11(the)m
10(state.)m
17(So)m
10(the)m
10(remaining)m
11(\014elds)m
10(to)m
10(check)m
264 515 p (are)s
t-ita.330 @sf 17(pr)m
(otocol)s
16(version,)m
19(header)m
18(length,)m
19(type)m
18(of)m
17(service,)m
20(don')m
-5 r 116 c
17(fragment,)m
19(time-to-live,)m
264 571 p (data)s
11(offset)m
t-rom.330 @sf 44 c
12(IP)m
12(options)m
11(\(if)m
12(any\))m
12(and)m
11(TCP)m
12(options)m
12(\(if)m
11(any\).)m
18(If)m
12(any)m
12(of)m
11(these)m
12(\014elds)m
12(dif)m
(fer)s
264 628 p (between)s
11(the)m
12(two)m
11(headers,)m
11(an)m
t-romsc.330 @sf 12(uncompressed)m
1090 634 p 23 2 ru
1116 628 p (tcp)s
t-rom.330 @sf 11(packet)m
12(is)m
11(sent.)m
150 734 p (If)s
11(all)m
12(the)m
11(\\unchanging")m
12(\014elds)m
11(match,)m
12(an)m
11(attempt)m
12(is)m
11(made)m
12(to)m
11(compress)m
11(the)m
12(current)m
11(packet:)m
cmsy10.329 @sf 215 840 p 15 c
t-rom.330 @sf 26(If)m
16(the)m
t-ita.330 @sf 15(URG)m
t-rom.330 @sf 16(\015ag)m
16(is)m
16(set,)m
17(the)m
t-ita.330 @sf 15(ur)m
(gent)s
14(data)m
t-rom.330 @sf 16(\014eld)m
16(is)m
16(encoded)m
15(\(note)m
16(that)m
16(it)m
16(may)m
15(be)m
16(zero\))m
264 896 p (and)s
17(the)m
17 r 85 c
17(bit)m
17(is)m
17(set)m
17(in)m
17(the)m
17(change)m
17(mask.)m
35(Unfortunately)m
-2 r 44 c
17(if)m
17(URG)m
17(is)m
17(clear)m
44 c
17(the)m
17(ur)m
45 c
264 953 p (gent)s
15(data)m
16(\014eld)m
15(must)m
16(be)m
16(checked)m
15(against)m
16(the)m
15(previous)m
16(packet)m
15(and,)m
17(if)m
16(it)m
15(changes,)m
17(an)m
t-romsc.330 @sf 264 1009 p (uncompressed)s
560 1016 p 23 2 ru
586 1009 p (tcp)s
t-rom.330 @sf 13(packet)m
12(is)m
13(sent.)m
20(\(`Ur)m
(gent)s
12(data')m
13(shouldn')m
116 c
12(change)m
12(when)m
13(URG)m
12(is)m
264 1066 p (clear)s
11(but)m
12 r 91 c
49 c
-1 r 49 c
93 c
10(doesn')m
116 c
11(require)m
11(this.\))m
cmsy10.329 @sf 215 1158 p 15 c
t-rom.330 @sf 26(The)m
12(dif)m
(ference)s
11(between)m
12(the)m
12(current)m
12(and)m
12(previous)m
12(packet')m
-1 r 115 c
t-ita.330 @sf 11(window)m
t-rom.330 @sf 12(\014eld)m
12(is)m
11(computed)m
264 1214 p (and,)s
11(if)m
12(non-zero,)m
11(is)m
11(encoded)m
12(and)m
11(the)m
12 r 87 c
11(bit)m
12(is)m
11(set)m
12(in)m
11(the)m
12(change)m
11(mask.)m
cmsy10.329 @sf 215 1307 p 15 c
t-rom.330 @sf 26(The)m
8(dif)m
(ference)s
7(between)m
t-ita.330 @sf 9(ack)m
t-rom.330 @sf 8(\014elds)m
8(is)m
8(computed.)m
16(If)m
9(the)m
8(result)m
8(is)m
8(less)m
8(than)m
8(zero)m
9(or)m
8(greater)m
264 1363 p (than)s
17 r 50 c
t-rom.240 @sf 383 1347 p (16)s
cmsy10.329 @sf 431 1363 p 0 c
t-rom.330 @sf 12 r 49 c
3 r 44 c
15(an)m
t-romsc.330 @sf 14(uncompressed)m
885 1370 p 23 2 ru
911 1363 p (tcp)s
t-rom.330 @sf 14(packet)m
15(is)m
14(sent.)m
t-rom.240 @sf 1260 1347 p (18)s
t-rom.330 @sf 1325 1363 p (Otherwise,)s
15(if)m
15(the)m
14(result)m
15(is)m
264 1420 p (non-zero,)s
11(it)m
12(is)m
11(encoded)m
11(and)m
12(the)m
11 r 65 c
12(bit)m
11(is)m
12(set)m
11(in)m
12(the)m
11(change)m
12(mask.)m
cmsy10.329 @sf 215 1512 p 15 c
t-rom.330 @sf 26(The)m
9(dif)m
(ference)s
9(between)m
t-ita.330 @sf 10(sequence)m
9(number)m
t-rom.330 @sf 10(\014elds)m
9(is)m
10(computed.)m
16(If)m
10(the)m
9(result)m
10(is)m
9(less)m
10(than)m
264 1568 p (zero)s
10(or)m
11(greater)m
11(than)m
13 r 50 c
t-rom.240 @sf 656 1552 p (16)s
cmsy10.329 @sf 699 1568 p 0 c
t-rom.330 @sf 9 r 49 c
3 r 44 c
11(an)m
t-romsc.330 @sf 10(uncompressed)m
1142 1575 p 23 2 ru
1168 1568 p (tcp)s
t-rom.330 @sf 11(packet)m
10(is)m
11(sent.)m
t-rom.240 @sf 1506 1552 p (19)s
t-rom.330 @sf 1561 1568 p (Otherwise,)s
11(if)m
264 1625 p (the)s
11(result)m
12(is)m
11(non-zero,)m
11(it)m
12(is)m
11(encoded)m
12(and)m
11(the)m
12 r 83 c
11(bit)m
12(is)m
11(set)m
12(in)m
11(the)m
12(change)m
11(mask.)m
150 1731 p (Once)s
11(the)m
12(U,)m
11 r 87 c
-3 r 44 c
10 r 65 c
11(and)m
11 r 83 c
12(changes)m
11(have)m
11(been)m
11(determined,)m
12(the)m
11(special-case)m
11(encodings)m
11(can)m
12(be)m
150 1787 p (checked:)s
cmsy10.329 @sf 215 1893 p 15 c
t-rom.330 @sf 26(If)m
t-ita.330 @sf 11(U,)m
11 r 83 c
t-rom.330 @sf 12(and)m
t-ita.330 @sf 11 r 87 c
t-rom.330 @sf 11(are)m
11(set,)m
12(the)m
11(changes)m
11(match)m
11(one)m
12(of)m
11(the)m
11(special-case)m
12(encodings.)m
17(Send)m
11(an)m
t-romsc.330 @sf 264 1950 p (uncompressed)s
560 1956 p 23 2 ru
586 1950 p (tcp)s
t-rom.330 @sf 12(packet.)m
cmsy10.329 @sf 215 2042 p 15 c
t-rom.330 @sf 26(If)m
11(only)m
t-ita.330 @sf 11 r 83 c
t-rom.330 @sf 11(is)m
11(set,)m
11(check)m
12(if)m
11(the)m
11(change)m
11(equals)m
11(the)m
11(amount)m
11(of)m
11(user)m
11(data)m
11(in)m
12(the)m
11(last)m
11(packet.)m
264 2098 p (I.e.,)s
13(subtract)m
13(the)m
13(TCP)m
12(and)m
13(IP)m
13(header)m
13(lengths)m
13(from)m
13(the)m
13(last)m
13(packet')m
-2 r 115 c
t-ita.330 @sf 12(total)m
13(length)m
t-rom.330 @sf 13(\014eld)m
264 2155 p (and)s
12(compare)m
12(the)m
13(result)m
12(to)m
12(the)m
13 r 83 c
12(change.)m
20(If)m
12(they're)m
12(the)m
13(same,)m
12(set)m
13(the)m
12(change)m
12(mask)m
13(to)m
264 2211 p (SA)s
-3(WU)m
12(\(the)m
12(special)m
13(case)m
12(for)m
13(\\unidirectional)m
12(data)m
13(transfer)m
2("\))m
12(and)m
13(discard)m
12(the)m
13(encoded)m
264 2268 p (sequence)s
10(number)m
10(change)m
10(\(the)m
10(decompressor)m
10(can)m
10(reconstruct)m
10(it)m
10(since)m
10(it)m
10(knows)m
11(the)m
10(last)m
264 2324 p (packet')s
-2 r 115 c
11(total)m
11(length)m
11(and)m
12(header)m
11(length\).)m
150 2363 p 660 2 ru
t-rom.180 @sf 187 2400 p (18)s
t-rom.270 @sf 217 2416 p (The)s
13(two)m
13(tests)m
12(can)m
13(be)m
13(combined)m
12(into)m
13 r 97 c
12(single)m
13(test)m
13(of)m
12(the)m
13(most)m
12(signi\014cant)m
13(16)m
13(bits)m
12(of)m
13(the)m
12(dif)m
(ference)s
12(being)m
150 2461 p (non-zero.)s
t-rom.180 @sf 187 2501 p (19)s
t-rom.270 @sf 217 2516 p 65 c
13(negative)m
12(sequence)m
12(number)m
12(change)m
12(probably)m
12(indicates)m
12 r 97 c
13(retransmission.)m
22(Since)m
12(this)m
12(may)m
12(be)m
12(due)m
13(to)m
12(the)m
150 2562 p (decompressor)s
7(having)m
6(dropped)m
7 r 97 c
7(packet,)m
7(an)m
7(uncompressed)m
6(packet)m
7(is)m
7(sent)m
7(to)m
6(re-sync)m
7(the)m
7(decompressor)m
6(\(see)m
7(sec.)m
7(4\).)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1338([Page)m
10 r 49 c
(1])s
@eop
restore
%%Page: 12 14
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 18 -3 -2 22.727] 15 @dc
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
12 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
cmsy10.329 @sf 215 233 p 15 c
t-rom.330 @sf 26(If)m
16(only)m
t-ita.330 @sf 16 r 83 c
t-rom.330 @sf 16(and)m
t-ita.330 @sf 16 r 65 c
t-rom.330 @sf 16(are)m
16(set,)m
17(check)m
16(if)m
16(they)m
16(both)m
16(changed)m
16(by)m
15(the)m
16(same)m
16(amount)m
16(and)m
16(that)m
264 289 p (amount)s
16(is)m
17(the)m
16(amount)m
17(of)m
16(user)m
17(data)m
16(in)m
17(the)m
16(last)m
17(packet.)m
32(If)m
17(so,)m
17(set)m
17(the)m
16(change)m
17(mask)m
264 346 p (to)s
14(SWU)m
14(\(the)m
15(special)m
14(case)m
15(for)m
14(\\echoed)m
14(interactive")m
15(traf)m
(\014c\))s
13(and)m
15(discard)m
14(the)m
15(encoded)m
264 402 p (changes.)s
cmsy10.329 @sf 215 500 p 15 c
t-rom.330 @sf 26(If)m
10(nothing)m
10(changed,)m
10(check)m
10(if)m
10(this)m
10(packet)m
10(has)m
10(no)m
10(user)m
10(data)m
10(\(in)m
10(which)m
10(case)m
10(it)m
10(is)m
10(probably)m
264 556 p 97 c
8(duplicate)m
9(ack)m
9(or)m
8(window)m
9(probe\))m
9(or)m
8(if)m
9(the)m
8(previous)m
9(packet)m
9(contained)m
8(user)m
9(data)m
9(\(which)m
264 613 p (means)s
12(this)m
12(packet)m
12(is)m
12 r 97 c
12(retransmission)m
13(on)m
12 r 97 c
12(connection)m
12(with)m
12(no)m
12(pipelining\).)m
20(In)m
12(either)m
264 669 p (of)s
11(these)m
12(cases,)m
11(send)m
11(an)m
t-romsc.330 @sf 12(uncompressed)m
985 676 p 23 2 ru
1011 669 p (tcp)s
t-rom.330 @sf 12(packet.)m
150 786 p (Finally)s
-2 r 44 c
10(the)m
12(TCP/IP)m
11(header)m
12(on)m
11(the)m
12(outgoing)m
11(packet)m
12(is)m
11(replaced)m
12(with)m
11 r 97 c
12(compressed)m
11(header:)m
cmsy10.329 @sf 215 903 p 15 c
t-rom.330 @sf 26(The)m
10(change)m
11(in)m
10(the)m
t-ita.330 @sf 11(packet)m
10(ID)m
t-rom.330 @sf 10(is)m
11(computed)m
10(and,)m
11(if)m
10(not)m
11(one,)m
t-rom.240 @sf 1295 887 p (20)s
t-rom.330 @sf 1345 903 p (the)s
10(dif)m
(ference)s
9(is)m
11(encoded)m
264 960 p (\(note)s
11(that)m
12(it)m
11(may)m
11(be)m
12(zero)m
11(or)m
12(negative\))m
11(and)m
12(the)m
11 r 73 c
12(bit)m
11(is)m
12(set)m
11(in)m
12(the)m
11(change)m
11(mask.)m
cmsy10.329 @sf 215 1057 p 15 c
t-rom.330 @sf 26(If)m
11(the)m
t-ita.330 @sf 12(PUSH)m
t-rom.330 @sf 11(bit)m
12(is)m
11(set)m
12(in)m
11(the)m
12(original)m
11(datagram,)m
11(the)m
12 r 80 c
11(bit)m
12(is)m
11(set)m
12(in)m
11(the)m
12(change)m
11(mask.)m
cmsy10.329 @sf 215 1155 p 15 c
t-rom.330 @sf 26(The)m
11(TCP)m
12(and)m
11(IP)m
12(headers)m
11(of)m
12(the)m
11(packet)m
12(are)m
11(copied)m
11(to)m
12(the)m
11(connection)m
12(state)m
11(slot.)m
cmsy10.329 @sf 215 1253 p 15 c
t-rom.330 @sf 26(The)m
12(TCP)m
12(and)m
12(IP)m
12(headers)m
13(of)m
12(the)m
12(packet)m
12(are)m
12(discarded)m
12(and)m
13 r 97 c
12(new)m
12(header)m
12(is)m
12(prepended)m
264 1309 p (consisting)s
11(of)m
12(\(in)m
11(reverse)m
11(order\):)m
t-bol.330 @sf 318 1407 p 123 c
t-rom.330 @sf 23(the)m
11(accumulated,)m
12(encoded)m
11(changes.)m
t-bol.330 @sf 318 1482 p 123 c
t-rom.330 @sf 23(the)m
t-ita.330 @sf 8(TCP)m
9(checksum)m
t-rom.330 @sf 9(\(if)m
9(the)m
8(new)m
9(header)m
9(is)m
9(being)m
8(constructed)m
9(\\in)m
9(place",)m
9(the)m
9(check-)m
364 1538 p (sum)s
9(may)m
10(have)m
10(been)m
10(overwritten)m
10(and)m
10(will)m
10(have)m
10(to)m
9(be)m
10(taken)m
10(from)m
10(the)m
10(header)m
10(copy)m
364 1595 p (in)s
15(the)m
16(connection)m
16(state)m
15(or)m
16(saved)m
16(in)m
16 r 97 c
15(temporary)m
16(before)m
16(the)m
15(original)m
16(header)m
16(is)m
364 1651 p (discarded\).)s
t-bol.330 @sf 318 1726 p 123 c
t-rom.330 @sf 23(the)m
t-ita.330 @sf 7(connection)m
8(number)m
t-rom.330 @sf 7(\(if)m
7(dif)m
(ferent)s
7(than)m
7(the)m
8(last)m
7(one)m
8(sent)m
7(on)m
7(this)m
8(serial)m
7(line\).)m
16(This)m
364 1782 p (also)s
10(means)m
11(that)m
10(the)m
11(the)m
10(line')m
-1 r 115 c
t-ita.330 @sf 10(last)m
10(connection)m
11(sent)m
t-rom.330 @sf 10(must)m
11(be)m
10(set)m
11(to)m
11(the)m
t-ita.330 @sf 10(connection)m
364 1839 p (number)s
t-rom.330 @sf 11(and)m
12(the)m
t-ita.330 @sf 11 r 67 c
t-rom.330 @sf 11(bit)m
12(set)m
11(in)m
12(the)m
11(change)m
12(mask.)m
t-bol.330 @sf 318 1914 p 123 c
t-rom.330 @sf 23(the)m
11(change)m
12(mask.)m
150 2031 p (At)s
11(this)m
12(point,)m
11(the)m
12(compressed)m
11(TCP)m
12(packet)m
11(is)m
12(passed)m
11(to)m
12(the)m
11(framer)m
11(for)m
12(transmission.)m
t-bol.330 @sf 150 2166 p (3.2.4)s
46(Decompr)m
(essor)s
10(pr)m
(ocessing)s
t-rom.330 @sf 150 2261 p (Because)s
16(of)m
16(the)m
15(simplex)m
16(communication)m
16(model,)m
17(processing)m
16(at)m
15(the)m
16(decompressor)m
16(is)m
16(much)m
150 2318 p (simpler)s
12(than)m
12(at)m
12(the)m
11(compressor)m
12 r 124 c
12(all)m
12(the)m
12(decisions)m
12(have)m
11(been)m
12(made)m
12(and)m
12(the)m
12(decompressor)m
150 2374 p (simply)s
11(does)m
12(what)m
11(the)m
12(compressor)m
11(has)m
12(told)m
11(it)m
12(to)m
11(do.)m
150 2419 p 660 2 ru
t-rom.180 @sf 187 2455 p (20)s
t-rom.270 @sf 217 2471 p (Note)s
12(that)m
12(the)m
12(test)m
12(here)m
11(is)m
12(against)m
t-ita.270 @sf 12(one)m
t-rom.270 @sf 44 c
12(not)m
t-ita.270 @sf 12(zer)m
111 c
t-rom.270 @sf 46 c
20(The)m
12(packet)m
12(ID)m
12(is)m
11(typically)m
12(incremented)m
12(by)m
12(one)m
12(for)m
11(each)m
150 2516 p (packet)s
10(sent)m
11(so)m
10 r 97 c
10(change)m
11(of)m
10(zero)m
10(is)m
11(very)m
10(unlikely)m
-2 r 46 c
16 r 65 c
11(change)m
10(of)m
10(one)m
11(is)m
10(likely:)m
16(It)m
10(occurs)m
10(during)m
11(any)m
10(period)m
10(when)m
150 2562 p (the)s
9(originating)m
10(system)m
9(has)m
9(activity)m
10(on)m
9(only)m
10(one)m
9(connection.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(12])m
@eop
restore
%%Page: 13 15
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 18 -3 -2 22.727] 15 @dc
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
/Times-SmallCaps /t-romsc.270 ReEncodeForTeX /t-romsc.270 /t-romsc.270 37.499947 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<FF8010001C0010000C00380004003800040038000400780002007400020074000200E4000200E4
000100E2000101C2000101C2000101C2000083810000838100008301000087010000470080004E
0080004E0080004E0080003C0040003C0040003C00E001F803FC> 32 26 -2 0 30.694] 78 @dc
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
cmsy9.300 @sf
[<FFFFFEFFFFFE00000000000000000000000000000000000000000600001E0000780001E0000780
001E0000780001E0000780001E0000780000E000007800001E000007800001E000007800001E00
0007800001E000007800001E000006> 24 31 -3 7 29.864] 20 @dc
13 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 221 233 p (The)s
7(decompressor)m
7(is)m
7(called)m
7(with)m
7(the)m
7(incoming)m
7(packet,)m
t-rom.240 @sf 1181 216 p (21)s
t-rom.330 @sf 1228 233 p (the)s
7(length)m
7(and)m
7(type)m
7(of)m
7(the)m
7(packet)m
150 289 p (and)s
9(the)m
8(compression)m
9(state)m
8(structure)m
9(for)m
9(the)m
8(incoming)m
9(serial)m
9(line.)m
16 r 65 c
8(\(possibly)m
9(re-constructed\))m
150 346 p (IP)s
11(packet)m
12(will)m
11(be)m
12(returned.)m
221 408 p (The)s
14(decompressor)m
14(can)m
14(receive)m
14(four)m
14(types)m
14(of)m
15(packet:)m
22(the)m
14(three)m
14(generated)m
14(by)m
15(the)m
14(com-)m
150 464 p (pressor)s
15(and)m
15 r 97 c
t-romsc.330 @sf 15(type)m
509 471 p 23 2 ru
535 464 p (error)s
t-rom.330 @sf 15(pseudo-packet)m
15(generated)m
15(when)m
15(the)m
15(receive)m
15(framer)m
15(detects)m
15(an)m
150 520 p (error)s
-2 r 46 c
t-rom.240 @sf 251 504 p (22)s
t-rom.330 @sf 307 520 p (The)s
11(\014rst)m
12(step)m
11(is)m
12 r 97 c
11(`switch')m
12(on)m
11(the)m
11(packet)m
12(type:)m
cmsy10.329 @sf 215 619 p 15 c
t-rom.330 @sf 26(If)m
12(the)m
12(packet)m
11(is)m
t-romsc.330 @sf 12(type)m
643 625 p 23 2 ru
669 619 p (error)s
t-rom.330 @sf 11(or)m
12(an)m
12(unrecognized)m
12(type,)m
12 r 97 c
12(`toss')m
12(\015ag)m
11(is)m
12(set)m
12(in)m
12(the)m
12(state)m
264 675 p (to)s
12(force)m
t-romsc.330 @sf 11(compressed)m
661 682 p 23 2 ru
687 675 p (tcp)s
t-rom.330 @sf 12(packets)m
12(to)m
12(be)m
11(discarded)m
12(until)m
12(one)m
12(with)m
12(the)m
12 r 67 c
12(bit)m
12(set)m
12(or)m
12(an)m
t-romsc.330 @sf 264 732 p (uncompressed)s
560 738 p 23 2 ru
586 732 p (tcp)s
t-rom.330 @sf 12(packet)m
11(arrives.)m
17(Nothing)m
12(\(a)m
11(null)m
12(packet\))m
11(is)m
12(returned.)m
cmsy10.329 @sf 215 825 p 15 c
t-rom.330 @sf 26(If)m
16(the)m
15(packet)m
16(is)m
t-romsc.330 @sf 15(type)m
658 832 p 23 2 ru
684 825 p (ip)s
t-rom.330 @sf 44 c
16(an)m
16(unmodi\014ed)m
16(copy)m
15(of)m
16(it)m
16(is)m
15(returned)m
16(and)m
16(the)m
15(state)m
16(is)m
15(not)m
264 882 p (modi\014ed.)s
cmsy10.329 @sf 215 975 p 15 c
t-rom.330 @sf 26(If)m
16(the)m
15(packet)m
16(is)m
t-romsc.330 @sf 16(uncompressed)m
860 982 p 23 2 ru
886 975 p (tcp)s
t-rom.330 @sf 44 c
17(the)m
15(state)m
16(index)m
16(from)m
16(the)m
15(IP)m
16(protocol)m
16(\014eld)m
16(is)m
264 1031 p (checked.)s
t-rom.240 @sf 428 1015 p (23)s
t-rom.330 @sf 486 1031 p (If)s
13(it')m
-2 r 115 c
11(illegal,)m
13(the)m
12(toss)m
12(\015ag)m
12(is)m
13(set)m
12(and)m
12(nothing)m
12(is)m
13(returned.)m
19(Otherwise,)m
12(the)m
264 1088 p (toss)s
13(\015ag)m
14(is)m
13(cleared,)m
15(the)m
13(index)m
14(is)m
14(copied)m
13(to)m
14(the)m
13(state')m
-1 r 115 c
t-ita.330 @sf 12(last)m
14(connection)m
14 r 114 c
-1(eceived)m
t-rom.330 @sf 13(\014eld,)m
264 1144 p 97 c
12(copy)m
12(of)m
12(the)m
12(input)m
12(packet)m
12(is)m
12(made,)m
t-rom.240 @sf 910 1128 p (24)s
t-rom.330 @sf 960 1144 p (the)s
12(TCP)m
12(protocol)m
12(number)m
12(is)m
12(restored)m
12(to)m
12(the)m
13(IP)m
264 1201 p (protocol)s
11(\014eld,)m
12(the)m
12(packet)m
12(header)m
11(is)m
12(copied)m
12(to)m
11(the)m
12(indicated)m
12(state)m
12(slot,)m
11(then)m
12(the)m
12(packet)m
264 1257 p (copy)s
11(is)m
12(returned.)m
150 1356 p (If)s
11(the)m
12(packet)m
11(was)m
12(not)m
11(handled)m
12(above,)m
11(it)m
11(is)m
t-romsc.330 @sf 12(compressed)m
1154 1362 p 23 2 ru
1180 1356 p (tcp)s
t-rom.330 @sf 12(and)m
11 r 97 c
12(new)m
11(TCP/IP)m
12(header)m
11(has)m
150 1412 p (to)s
13(be)m
13(synthesized)m
13(from)m
13(information)m
13(in)m
14(the)m
13(packet)m
13(plus)m
13(the)m
13(last)m
13(packet')m
-2 r 115 c
13(header)m
13(in)m
13(the)m
13(state)m
150 1468 p (slot.)s
17(First,)m
12(the)m
11(explicit)m
12(or)m
11(implicit)m
11(connection)m
12(number)m
11(is)m
12(used)m
11(to)m
12(locate)m
11(the)m
12(state)m
11(slot:)m
cmsy10.329 @sf 215 1567 p 15 c
t-rom.330 @sf 26(If)m
14(the)m
13 r 67 c
14(bit)m
14(is)m
13(set)m
14(in)m
13(the)m
14(change)m
14(mask,)m
14(the)m
14(state)m
13(index)m
14(is)m
14(checked.)m
23(If)m
14(it')m
-1 r 115 c
12(illegal,)m
14(the)m
264 1623 p (toss)s
12(\015ag)m
12(is)m
12(set)m
12(and)m
12(nothing)m
12(is)m
12(returned.)m
19(Otherwise,)m
t-ita.330 @sf 12(last)m
12(connection)m
12 r 114 c
(eceived)s
t-rom.330 @sf 11(is)m
12(set)m
12(to)m
264 1680 p (the)s
11(packet')m
-1 r 115 c
10(state)m
11(index)m
12(and)m
11(the)m
12(toss)m
11(\015ag)m
12(is)m
11(cleared.)m
cmsy10.329 @sf 215 1773 p 15 c
t-rom.330 @sf 26(If)m
17(the)m
18 r 67 c
17(bit)m
17(is)m
17(clear)m
18(and)m
17(the)m
17(toss)m
18(\015ag)m
17(is)m
17(set,)m
19(the)m
17(packet)m
18(is)m
17(ignored)m
17(and)m
18(nothing)m
17(is)m
264 1830 p (returned.)s
150 1928 p (At)s
16(this)m
17(point,)m
t-ita.330 @sf 18(last)m
16(connection)m
16 r 114 c
(eceived)s
t-rom.330 @sf 15(is)m
17(the)m
16(index)m
16(of)m
17(the)m
16(appropriate)m
17(state)m
16(slot)m
16(and)m
17(the)m
150 1984 p (\014rst)s
14(byte\(s\))m
14(of)m
13(the)m
14(compressed)m
14(packet)m
14(\(the)m
13(change)m
14(mask)m
14(and,)m
14(possibly)m
-2 r 44 c
13(connection)m
14(index\))m
150 2025 p 660 2 ru
t-rom.180 @sf 187 2061 p (21)s
t-rom.270 @sf 217 2077 p (It')s
-1 r 115 c
6(assumed)m
7(that)m
7(link-level)m
7(framing)m
7(has)m
7(been)m
7(removed)m
7(by)m
7(this)m
7(point)m
6(and)m
7(the)m
7(packet)m
7(and)m
7(length)m
7(do)m
t-ita.270 @sf 7(not)m
t-rom.270 @sf 7(include)m
150 2123 p (type)s
9(or)m
10(framing)m
9(bytes.)m
t-rom.180 @sf 187 2162 p (22)s
t-rom.270 @sf 217 2178 p (No)s
16(data)m
16(need)m
15(be)m
16(associated)m
15(with)m
16 r 97 c
t-romsc.270 @sf 15(type)m
857 2184 p 19 2 ru
878 2178 p (error)s
t-rom.270 @sf 16(packet.)m
33(It)m
15(exists)m
16(so)m
15(the)m
16(receive)m
15(framer)m
16(can)m
16(tell)m
15(the)m
150 2223 p (decompressor)s
10(that)m
11(there)m
10(may)m
10(be)m
10 r 97 c
11(gap)m
10(in)m
10(the)m
10(data)m
11(stream.)m
16(The)m
11(decompressor)m
10(uses)m
10(this)m
10(as)m
11 r 97 c
10(signal)m
10(that)m
10(packets)m
150 2269 p (should)s
10(be)m
11(tossed)m
10(until)m
11(one)m
10(arrives)m
11(with)m
10(an)m
11(explicit)m
10(connection)m
10(number)m
11(\(C)m
10(bit)m
11(set\).)m
17(See)m
11(the)m
10(last)m
10(part)m
11(of)m
10(sec.)m
11(4.1)m
150 2315 p (for)s
9 r 97 c
10(discussion)m
9(of)m
9(why)m
10(this)m
9(is)m
10(necessary)m
-2 r 46 c
t-rom.180 @sf 187 2354 p (23)s
t-rom.270 @sf 217 2370 p (State)s
12(indices)m
12(follow)m
12(the)m
12 r 67 c
11(language)m
12(convention)m
12(and)m
12(run)m
11(from)m
12 r 48 c
12(to)m
cmmi9.300 @sf 15 r 78 c
cmsy9.300 @sf 14 r 0 c
t-rom.270 @sf 10 r 49 c
3 r 44 c
13(where)m
15 r 48 c
cmmi9.300 @sf 14 r 60 c
15 r 78 c
cmsy9.300 @sf 19 r 20 c
t-rom.270 @sf 15(256)m
15(is)m
11(the)m
150 2416 p (number)s
9(of)m
10(available)m
9(state)m
9(slots.)m
t-rom.180 @sf 187 2455 p (24)s
t-rom.270 @sf 217 2471 p (As)s
11(with)m
11(the)m
11(compressor)m
-1 r 44 c
10(the)m
11(code)m
11(can)m
11(be)m
10(structured)m
11(so)m
11(no)m
10(copies)m
11(are)m
11(done)m
11(and)m
10(all)m
11(modi\014cations)m
11(are)m
11(done)m
150 2516 p (in-place.)s
14(However)m
-1 r 44 c
8(since)m
9(the)m
9(output)m
9(packet)m
8(can)m
9(be)m
9(lar)m
(ger)s
8(than)m
9(the)m
9(input)m
9(packet,)m
8(128)m
9(bytes)m
9(of)m
9(free)m
9(space)m
8(must)m
9(be)m
150 2562 p (left)s
9(at)m
10(the)m
9(front)m
9(of)m
10(the)m
9(input)m
10(packet)m
9(buf)m
(fer)s
9(to)m
9(allow)m
9(room)m
10(to)m
9(prepend)m
10(the)m
9(TCP/IP)m
9(header)m
-1 r 46 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(13])m
@eop
restore
%%Page: 14 16
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 18 -3 -2 22.727] 15 @dc
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
14 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 150 233 p (have)s
16(been)m
17(consumed.)m
32(Since)m
16(the)m
17(TCP/IP)m
16(header)m
17(in)m
16(the)m
17(state)m
16(slot)m
17(must)m
16(end)m
16(up)m
17(re\015ecting)m
150 289 p (the)s
12(newly)m
12(arrived)m
12(packet,)m
12(it')m
-1 r 115 c
10(simplest)m
12(to)m
12(apply)m
12(the)m
12(changes)m
12(from)m
12(the)m
12(packet)m
12(to)m
12(that)m
12(header)m
150 346 p (then)s
10(construct)m
10(the)m
10(output)m
9(packet)m
10(from)m
10(that)m
10(header)m
10(concatenated)m
10(with)m
9(the)m
10(data)m
10(from)m
10(the)m
10(input)m
150 402 p (packet.)s
28(\(In)m
14(the)m
15(following)m
15(description,)m
16(`saved)m
15(header)m
2 r 39 c
15(is)m
15(used)m
14(as)m
15(an)m
15(abbreviation)m
15(for)m
15(`the)m
150 458 p (TCP/IP)s
11(header)m
12(saved)m
11(in)m
12(the)m
11(state)m
12(slot'.\))m
cmsy10.329 @sf 215 555 p 15 c
t-rom.330 @sf 26(The)m
12(next)m
12(two)m
12(bytes)m
11(in)m
12(the)m
12(incoming)m
12(packet)m
12(are)m
12(the)m
12(TCP)m
12(checksum.)m
18(They)m
12(are)m
12(copied)m
264 611 p (to)s
11(the)m
12(saved)m
11(header)m
-2 r 46 c
cmsy10.329 @sf 215 704 p 15 c
t-rom.330 @sf 26(If)m
13(the)m
13 r 80 c
13(bit)m
14(is)m
13(set)m
13(in)m
13(the)m
13(change)m
13(mask,)m
14(the)m
13(TCP)m
13(PUSH)m
13(bit)m
14(is)m
13(set)m
13(in)m
13(the)m
13(saved)m
13(header)m
-1 r 46 c
264 760 p (Otherwise)s
11(the)m
12(PUSH)m
11(bit)m
11(is)m
12(cleared.)m
cmsy10.329 @sf 215 853 p 15 c
t-rom.330 @sf 26(If)m
11(the)m
12(low)m
11(order)m
12(four)m
11(bits)m
12(\(S,)m
11(A,)m
12 r 87 c
11(and)m
12(U\))m
11(of)m
11(the)m
12(change)m
11(mask)m
12(are)m
11(all)m
12(set)m
11(\(the)m
12(`unidi-)m
264 909 p (rectional)s
12(data')m
13(special)m
12(case\),)m
13(the)m
13(amount)m
12(of)m
13(user)m
12(data)m
13(in)m
12(the)m
13(last)m
12(packet)m
13(is)m
12(calculated)m
264 966 p (by)s
13(subtracting)m
14(the)m
14(TCP)m
14(and)m
14(IP)m
14(header)m
13(lengths)m
14(from)m
14(the)m
14(IP)m
14(total)m
13(length)m
14(in)m
14(the)m
14(saved)m
264 1022 p (header)s
-2 r 46 c
16(That)m
11(amount)m
10(is)m
11(then)m
10(added)m
11(to)m
10(the)m
11(TCP)m
10(sequence)m
11(number)m
10(in)m
11(the)m
11(saved)m
10(header)m
-1 r 46 c
cmsy10.329 @sf 215 1115 p 15 c
t-rom.330 @sf 26(If)m
9(S,)m
10 r 87 c
10(and)m
9 r 85 c
10(are)m
9(set)m
10(and)m
10 r 65 c
9(is)m
10(clear)m
9(\(the)m
10(`terminal)m
9(traf)m
(\014c')s
9(special)m
10(case\),)m
10(the)m
9(amount)m
10(of)m
264 1172 p (user)s
10(data)m
10(in)m
10(the)m
10(last)m
10(packet)m
10(is)m
10(calculated)m
10(and)m
11(added)m
10(to)m
10(both)m
10(the)m
10(TCP)m
10(sequence)m
10(number)m
264 1228 p (and)s
11(ack)m
12(\014elds)m
11(in)m
11(the)m
12(saved)m
11(header)m
-1 r 46 c
cmsy10.329 @sf 215 1321 p 15 c
t-rom.330 @sf 26(Otherwise,)m
18(the)m
16(change)m
16(mask)m
17(bits)m
16(are)m
17(interpreted)m
16(individually)m
17(in)m
16(the)m
17(order)m
16(that)m
16(the)m
264 1377 p (compressor)s
11(set)m
12(them:)m
t-bol.330 @sf 318 1470 p 123 c
t-rom.330 @sf 23(If)m
16(the)m
16 r 85 c
16(bit)m
16(is)m
16(set,)m
17(the)m
16(TCP)m
16(URG)m
16(bit)m
16(is)m
16(set)m
16(in)m
16(the)m
16(saved)m
16(header)m
16(and)m
16(the)m
16(next)m
364 1526 p (byte\(s\))s
15(of)m
15(the)m
15(incoming)m
16(packet)m
15(are)m
15(decoded)m
15(and)m
16(stuf)m
(fed)s
14(into)m
15(the)m
16(TCP)m
15(Ur)m
(gent)s
364 1583 p (Pointer)s
-2 r 46 c
16(If)m
12(the)m
11 r 85 c
12(bit)m
11(is)m
12(clear)m
-1 r 44 c
10(the)m
12(TCP)m
11(URG)m
12(bit)m
11(is)m
11(cleared.)m
t-bol.330 @sf 318 1655 p 123 c
t-rom.330 @sf 23(If)m
16(the)m
16 r 87 c
16(bit)m
16(is)m
16(set,)m
17(the)m
16(next)m
16(byte\(s\))m
16(of)m
16(the)m
16(incoming)m
16(packet)m
16(are)m
16(decoded)m
16(and)m
364 1711 p (added)s
11(to)m
12(the)m
11(TCP)m
11(window)m
12(\014eld)m
11(of)m
12(the)m
11(saved)m
12(header)m
-2 r 46 c
t-bol.330 @sf 318 1783 p 123 c
t-rom.330 @sf 23(If)m
9(the)m
8 r 65 c
9(bit)m
9(is)m
9(set,)m
9(the)m
9(next)m
9(byte\(s\))m
9(of)m
9(the)m
8(incoming)m
9(packet)m
9(are)m
9(decoded)m
9(and)m
9(added)m
364 1840 p (to)s
11(the)m
12(TCP)m
11(ack)m
11(\014eld)m
12(of)m
11(the)m
12(saved)m
11(header)m
-1 r 46 c
t-bol.330 @sf 318 1912 p 123 c
t-rom.330 @sf 23(If)m
9(the)m
9 r 83 c
10(bit)m
9(is)m
9(set,)m
10(the)m
9(next)m
10(byte\(s\))m
9(of)m
9(the)m
10(incoming)m
9(packet)m
9(are)m
10(decoded)m
9(and)m
9(added)m
364 1968 p (to)s
11(the)m
12(TCP)m
11(sequence)m
11(number)m
12(\014eld)m
11(of)m
12(the)m
11(saved)m
12(header)m
-2 r 46 c
cmsy10.329 @sf 215 2061 p 15 c
t-rom.330 @sf 26(If)m
16(the)m
16 r 73 c
15(bit)m
16(is)m
16(set)m
16(in)m
16(the)m
15(change)m
16(mask,)m
17(the)m
16(next)m
16(byte\(s\))m
16(of)m
15(the)m
16(incoming)m
16(packet)m
16(are)m
264 2117 p (decoded)s
10(and)m
11(added)m
10(to)m
11(the)m
10(IP)m
11(ID)m
10(\014eld)m
11(of)m
10(the)m
11(saved)m
10(packet.)m
17(Otherwise,)m
11(one)m
10(is)m
11(added)m
10(to)m
264 2174 p (the)s
11(IP)m
12(ID.)m
221 2270 p (At)s
11(this)m
12(point,)m
11(all)m
12(the)m
11(header)m
12(information)m
11(from)m
12(the)m
11(incoming)m
12(packet)m
11(has)m
12(been)m
11(consumed)m
150 2326 p (and)s
10(only)m
11(data)m
10(remains.)m
17(The)m
10(length)m
11(of)m
10(the)m
10(remaining)m
11(data)m
10(is)m
10(added)m
11(to)m
10(the)m
10(length)m
11(of)m
10(the)m
10(saved)m
150 2383 p (IP)s
12(and)m
13(TCP)m
12(headers)m
12(and)m
12(the)m
13(result)m
12(is)m
12(put)m
12(into)m
13(the)m
12(saved)m
12(IP)m
12(total)m
13(length)m
12(\014eld.)m
19(The)m
13(saved)m
12(IP)m
150 2439 p (header)s
9(is)m
9(now)m
9(up)m
9(to)m
9(date)m
9(so)m
10(its)m
9(checksum)m
9(is)m
9(recalculated)m
9(and)m
9(stored)m
9(in)m
9(the)m
9(IP)m
9(checksum)m
9(\014eld.)m
150 2496 p (Finally)s
-2 r 44 c
9(an)m
9(output)m
9(datagram)m
9(consisting)m
10(of)m
9(the)m
9(saved)m
9(header)m
10(concatenated)m
9(with)m
9(the)m
9(remaining)m
150 2552 p (incoming)s
11(data)m
12(is)m
11(constructed)m
12(and)m
11(returned.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(14])m
@eop
restore
%%Page: 15 17
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<C00000E00000E0000070000070000070000070000038000038000039F0783F08C41E05C41E03C2
1E01C21E01C20E00E10E00E00E00E00E00E0070070070070070070070070038038038038038038
03803801C01C018018> 24 29 -1 9 27.388] 22 @dc
/Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.666629 TeXPSmakefont def
1 /cmr10.300 @newfont
cmr10.300 @sf
[<FFFFFFFC7FFFFFF87FFFFFF8200000F0200001F0100001E0100003E0080003C0080007C0040007
8004000F8002000F0002001F0001001E0001003E0000803C0000C07C00004078000060F8000020
F0000031F0000013E000000BC000000FC00000078000000780000003000000030000> 32 28 -2 0 34.592] 1 @dc
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
1 /cmr10.329 @newfont
cmr10.329 @sf
[<FFFFFFFF807FFFFFFF007FFFFFFF002000001E002000003E001000003C001000007C0008000078
00080000F800040000F000040001F000020001E000020003E000010003C000018007C000008007
800000C00F800000400F000000601F000000201E000000103C000000107C000000087800000008
F800000004F000000005F000000003E000000003E000000001C000000001C000000000800000> 40 31 -2 0 37.878] 1 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
15 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.420 @sf 150 233 p 52 c
58(Err)m
(or)s
14(handling)m
t-bol.360 @sf 150 343 p (4.1)s
50(Err)m
(or)s
12(detection)m
t-rom.330 @sf 150 435 p (In)s
12(the)m
12(author)m
2 r 39 c
-2 r 115 c
11(experience,)m
12(dialup)m
13(connections)m
12(are)m
12(particularly)m
12(prone)m
12(to)m
12(data)m
12(errors.)m
19(These)m
150 491 p (errors)s
11(interact)m
12(with)m
11(compression)m
12(in)m
11(two)m
12(dif)m
(ferent)s
10(ways:)m
221 553 p (First)s
11(is)m
12(the)m
11(local)m
12(ef)m
(fect)s
11(of)m
11(an)m
12(error)m
12(in)m
11 r 97 c
12(compressed)m
11(packet.)m
18(All)m
12(error)m
11(detection)m
12(is)m
11(based)m
150 609 p (on)s
10(redundancy)m
9(yet)m
10(compression)m
10(has)m
9(squeezed)m
10(out)m
10(almost)m
9(all)m
10(the)m
10(redundancy)m
9(in)m
10(the)m
10(TCP)m
9(and)m
150 666 p (IP)s
14(headers.)m
26(In)m
14(other)m
14(words,)m
15(the)m
15(decompressor)m
14(will)m
14(happily)m
14(turn)m
15(random)m
14(line)m
14(noise)m
14(into)m
15 r 97 c
150 722 p (perfectly)s
11(valid)m
10(TCP/IP)m
11(packet.)m
t-rom.240 @sf 708 706 p (25)s
t-rom.330 @sf 764 722 p (One)s
11(could)m
10(rely)m
11(on)m
11(the)m
11(TCP)m
10(checksum)m
11(to)m
11(detect)m
11(corrupted)m
150 778 p (compressed)s
12(packets)m
13(but,)m
12(unfortunately)m
-2 r 44 c
11(some)m
13(rather)m
12(likely)m
12(errors)m
12(will)m
13(not)m
12(be)m
12(detected.)m
20(For)m
150 835 p (example,)s
10(the)m
10(TCP)m
10(checksum)m
10(will)m
10(often)m
10(not)m
10(detect)m
10(two)m
10(single)m
10(bit)m
10(errors)m
10(separated)m
10(by)m
10(16)m
10(bits.)m
150 891 p (For)s
10 r 97 c
10 r 86 c
-4(.32)m
9(modem)m
10(signalling)m
10(at)m
10(2400)m
11(baud)m
10(with)m
10 r 52 c
10(bits/baud,)m
11(any)m
10(line)m
10(hit)m
10(lasting)m
11(longer)m
10(than)m
150 948 p (400)s
cmmi10.329 @sf 3 r 22 c
t-rom.330 @sf 3(s.)m
9(would)m
9(corrupt)m
9(16)m
9(bits.)m
17(According)m
9(to)m
9 r 91 c
50 c
(],)s
9(residential)m
9(phone)m
9(line)m
9(hits)m
9(of)m
10(up)m
9(to)m
9(2ms.)m
9(are)m
150 1004 p (likely)s
-2 r 46 c
221 1066 p (The)s
19(correct)m
19(way)m
19(to)m
19(deal)m
19(with)m
19(this)m
19(problem)m
19(is)m
19(to)m
19(provide)m
19(for)m
20(error)m
19(detection)m
19(at)m
19(the)m
150 1122 p (framing)s
14(level.)m
23(Since)m
14(the)m
13(framing)m
14(\(at)m
14(least)m
13(in)m
14(theory\))m
13(can)m
14(be)m
13(tailored)m
14(to)m
14(the)m
13(characteristics)m
150 1179 p (of)s
15 r 97 c
15(particular)m
14(link,)m
16(the)m
15(detection)m
15(can)m
15(be)m
14(as)m
15(light)m
15(or)m
15(heavy-weight)m
15(as)m
15(appropriate)m
14(for)m
15(that)m
150 1235 p (link.)s
t-rom.240 @sf 236 1218 p (26)s
t-rom.330 @sf 292 1235 p (Since)s
12(packet)m
11(error)m
12(detection)m
12(is)m
11(done)m
12(at)m
11(the)m
12(framing)m
12(level,)m
11(the)m
12(decompressor)m
12(simply)m
150 1291 p (assumes)s
10(that)m
11(it)m
10(will)m
10(get)m
11(an)m
10(indication)m
11(that)m
10(the)m
10(current)m
11(packet)m
10(was)m
10(received)m
11(with)m
10(errors.)m
17(\(The)m
150 1348 p (decompressor)s
14(always)m
14(ignores)m
14(\(discards\))m
14 r 97 c
14(packet)m
14(with)m
14(errors.)m
25(However)m
-1 r 44 c
13(the)m
14(indication)m
14(is)m
150 1404 p (needed)s
11(to)m
12(prevent)m
11(the)m
12(error)m
11(being)m
12(propagated)m
11 r 124 c
12(see)m
11(below)m
-2(.\))m
221 1466 p (The)s
15(\\discard)m
14(erroneous)m
15(packets")m
15(policy)m
15(gives)m
15(rise)m
15(to)m
15(the)m
15(second)m
15(interaction)m
15(of)m
15(errors)m
150 1522 p (and)s
11(compression.)m
18(Consider)m
11(the)m
12(following)m
11(conversation:)m
495 1578 p 961 2 ru
494 1635 p 2 57 ru
t-ita.300 @sf 528 1618 p (original)s
695 1635 p 2 57 ru
783 1618 p (sent)s
936 1635 p 2 57 ru
988 1618 p 114 c
-1(eceived)m
1177 1635 p 2 57 ru
1203 1618 p 114 c
-1(econstructed)m
1455 1635 p 2 57 ru
495 1636 p 961 2 ru
494 1693 p 2 57 ru
t-rom.330 @sf 519 1676 p (1:)s
50 r 65 c
695 1693 p 2 57 ru
760 1676 p (1:)s
50 r 65 c
936 1693 p 2 57 ru
1001 1676 p (1:)s
50 r 65 c
1177 1693 p 2 57 ru
1213 1676 p (1:)s
50 r 65 c
1455 1693 p 2 57 ru
494 1749 p 2 57 ru
519 1732 p (2:)s
50(BC)m
695 1749 p 2 57 ru
cmr10.300 @sf 724 1732 p 1 c
t-rom.330 @sf 3(1,)m
50(BC)m
936 1749 p 2 57 ru
cmr10.300 @sf 965 1732 p 1 c
t-rom.330 @sf 3(1,)m
50(BC)m
1177 1749 p 2 57 ru
1213 1732 p (2:)s
50(BC)m
1455 1749 p 2 57 ru
494 1806 p 2 57 ru
519 1789 p (4:)s
50(DE)m
695 1806 p 2 57 ru
cmr10.300 @sf 724 1789 p 1 c
t-rom.330 @sf 3(2,)m
50(DE)m
936 1806 p 2 57 ru
991 1789 p 124 c
1177 1806 p 2 57 ru
1203 1789 p 124 c
1455 1806 p 2 57 ru
494 1862 p 2 57 ru
519 1845 p (6:)s
50 r 70 c
695 1862 p 2 57 ru
cmr10.300 @sf 724 1845 p 1 c
t-rom.330 @sf 3(2,)m
50 r 70 c
936 1862 p 2 57 ru
cmr10.300 @sf 965 1845 p 1 c
t-rom.330 @sf 3(2,)m
50 r 70 c
1177 1862 p 2 57 ru
1213 1845 p (4:)s
50 r 70 c
1455 1862 p 2 57 ru
494 1919 p 2 57 ru
519 1902 p (7:)s
50(GH)m
695 1919 p 2 57 ru
cmr10.300 @sf 724 1902 p 1 c
t-rom.330 @sf 3(1,)m
50(GH)m
936 1919 p 2 57 ru
cmr10.300 @sf 965 1902 p 1 c
t-rom.330 @sf 3(1,)m
50(GH)m
1177 1919 p 2 57 ru
1213 1902 p (5:)s
50(GH)m
1455 1919 p 2 57 ru
495 1920 p 961 2 ru
150 1996 p (\(Each)s
10(entry)m
9(above)m
10(has)m
10(the)m
10(form)m
9 r 92 c
t-ita.330 @sf (starting)s
10(sequence)m
10(number)m
t-rom.330 @sf 58 c
t-ita.330 @sf (data)s
9(sent)m
t-rom.330 @sf 34 c
10(or)m
10 r 92 c
cmr10.329 @sf 3 r 1 c
t-ita.330 @sf -3(sequence)m
8(num-)m
150 2053 p (ber)s
13(change)m
t-rom.330 @sf 44 c
t-ita.330 @sf (data)s
13(sent)m
t-rom.330 @sf (".\))s
22(The)m
13(\014rst)m
14(thing)m
13(sent)m
13(is)m
13(an)m
13(uncompressed)m
13(packet,)m
14(followed)m
13(by)m
13(four)m
150 2109 p (compressed)s
14(packets.)m
23(The)m
14(third)m
14(packet)m
13(picks)m
14(up)m
13(an)m
14(error)m
14(and)m
13(is)m
14(discarded.)m
24 r 84 c
-3 r 111 c
13(reconstruct)m
150 2166 p (the)s
14(fourth)m
14(packet,)m
14(the)m
14(receiver)m
14(applies)m
14(the)m
14(sequence)m
14(number)m
14(change)m
13(from)m
14(incoming)m
14(com-)m
150 2222 p (pressed)s
8(packet)m
9(to)m
8(the)m
9(sequence)m
8(number)m
9(of)m
8(the)m
9(last)m
8(correctly)m
9(received)m
8(packet,)m
10(packet)m
8(two,)m
9(and)m
150 2279 p (generates)s
13(an)m
12(incorrect)m
13(sequence)m
13(number)m
12(for)m
13(packet)m
13(four)m
-2 r 46 c
20(After)m
12(the)m
13(error)m
-1 r 44 c
12(all)m
13(reconstructed)m
150 2318 p 660 2 ru
t-rom.180 @sf 187 2354 p (25)s
t-rom.270 @sf 217 2370 p (modulo)s
10(the)m
9(TCP)m
10(checksum.)m
t-rom.180 @sf 187 2409 p (26)s
t-rom.270 @sf 217 2425 p (While)s
7(appropriate)m
7(error)m
7(detection)m
7(is)m
6(link)m
7(dependent,)m
7(the)m
7(CCITT)m
7(CRC)m
7(used)m
6(in)m
7 r 91 c
57 c
93 c
7(strikes)m
7(an)m
7(excellent)m
6(balance)m
150 2471 p (between)s
8(ease)m
9(of)m
8(computation)m
9(and)m
8(robust)m
9(error)m
8(detection)m
9(for)m
8 r 97 c
8(lar)m
(ge)s
8(variety)m
9(of)m
8(links,)m
9(particularly)m
8(at)m
9(the)m
8(relatively)m
150 2516 p (small)s
10(packet)m
10(sizes)m
11(needed)m
10(for)m
10(good)m
10(interactive)m
11(response.)m
16(Thus,)m
11(for)m
10(the)m
10(sake)m
10(of)m
11(interoperability)m
-2 r 44 c
10(the)m
10(framing)m
10(in)m
150 2562 p 91 c
57 c
93 c
9(should)m
10(be)m
9(used)m
9(unless)m
10(there)m
9(is)m
10 r 97 c
9(truly)m
9(compelling)m
10(reason)m
9(to)m
9(do)m
10(otherwise.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(15])m
@eop
restore
%%Page: 16 18
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
1 /cmsy8.300 @newfont
cmsy8.300 @sf
[<FFFFF0FFFFF0> 24 2 -3 -7 27.443] 0 @dc
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
16 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 150 233 p (packets')s
17(sequence)m
16(numbers)m
17(will)m
16(be)m
17(in)m
17(error)m
-1 r 44 c
17(shifted)m
16(down)m
17(by)m
17(the)m
16(amount)m
17(of)m
16(data)m
17(in)m
17(the)m
150 289 p (missing)s
11(packet.)m
t-rom.240 @sf 438 273 p (27)s
t-rom.330 @sf 221 353 p 87 c
-1(ithout)m
12(some)m
12(sort)m
13(of)m
13(check,)m
13(the)m
13(preceding)m
13(error)m
13(would)m
13(result)m
12(in)m
13(the)m
13(receiver)m
13(invisibly)m
150 410 p (losing)s
14(two)m
14(bytes)m
14(from)m
15(the)m
14(middle)m
14(of)m
14(the)m
14(transfer)m
14(\(since)m
14(the)m
14(decompressor)m
15(regenerates)m
14(se-)m
150 466 p (quence)s
9(numbers,)m
10(the)m
10(packets)m
9(containing)m
10 r 70 c
9(and)m
9(GH)m
10(arrive)m
9(at)m
10(the)m
9(receiver)m
2 r 39 c
-2 r 115 c
9(TCP)m
9(with)m
9(exactly)m
150 523 p (the)s
11(sequence)m
11(numbers)m
11(they)m
11(would)m
11(have)m
11(had)m
11(if)m
11(the)m
11(DE)m
11(packet)m
11(had)m
11(never)m
10(existed\).)m
17(Although)m
150 579 p (some)s
13(TCP)m
12(conversations)m
13(can)m
12(survive)m
13(missing)m
13(data)m
t-rom.240 @sf 1079 563 p (28)s
t-rom.330 @sf 1130 579 p (it)s
13(is)m
12(not)m
13 r 97 c
13(practice)m
12(to)m
13(be)m
12(encouraged.)m
150 635 p (Fortunately)s
9(the)m
9(TCP)m
10(checksum,)m
9(since)m
10(it)m
9(is)m
9 r 97 c
9(simple)m
9(sum)m
10(of)m
9(the)m
9(packet)m
9(contents)m
t-ita.330 @sf 10(including)m
9(the)m
150 692 p (sequence)s
12(numbers)m
t-rom.330 @sf 44 c
13(detects)m
12(100%)m
12(of)m
12(these)m
13(errors.)m
19(E.g.,)m
13(the)m
12(receiver)m
2 r 39 c
-2 r 115 c
11(computed)m
13(checksum)m
150 748 p (for)s
11(the)m
12(last)m
11(two)m
12(packets)m
11(above)m
12(always)m
11(dif)m
(fers)s
11(from)m
11(the)m
12(packet)m
11(checksum)m
12(by)m
11(two.)m
221 813 p (Unfortunately)s
-2 r 44 c
10(there)m
12(is)m
11 r 97 c
12(way)m
11(for)m
12(the)m
12(TCP)m
11(checksum)m
12(protection)m
11(described)m
12(above)m
11(to)m
12(fail)m
150 869 p (if)s
14(the)m
14(changes)m
14(in)m
15(an)m
14(incoming)m
14(compressed)m
14(packet)m
14(are)m
14(applied)m
14(to)m
14(the)m
15(wrong)m
14(conversation:)m
150 925 p (Consider)s
7(two)m
8(active)m
7(conversations)m
8 r 67 c
t-rom.240 @sf 809 932 p 49 c
t-rom.330 @sf 838 925 p (and)s
8 r 67 c
t-rom.240 @sf 946 932 p 50 c
t-rom.330 @sf 975 925 p (and)s
7 r 97 c
8(packet)m
7(from)m
8 r 67 c
t-rom.240 @sf 1333 932 p 49 c
t-rom.330 @sf 1363 925 p (followed)s
7(by)m
8(two)m
7(packets)m
150 982 p (from)s
14 r 67 c
t-rom.240 @sf 287 989 p 50 c
t-rom.330 @sf 309 982 p 46 c
26(Since)m
14(the)m
14(connection)m
15(number)m
14(doesn')m
116 c
14(change,)m
15(it')m
-2 r 115 c
14(omitted)m
14(from)m
14(the)m
15(second)m
14 r 67 c
t-rom.240 @sf 1781 989 p 50 c
t-rom.330 @sf 150 1038 p (packet.)s
18(But,)m
11(if)m
12(the)m
11(\014rst)m
12 r 67 c
t-rom.240 @sf 612 1045 p 50 c
t-rom.330 @sf 645 1038 p (packet)s
12(is)m
11(received)m
12(with)m
11 r 97 c
12(CRC)m
12(error)m
-1 r 44 c
10(the)m
12(second)m
12 r 67 c
t-rom.240 @sf 1564 1045 p 50 c
t-rom.330 @sf 1597 1038 p (packet)s
12(will)m
150 1095 p (mistakenly)s
8(be)m
7(considered)m
8(the)m
7(next)m
8(packet)m
8(in)m
7 r 67 c
t-rom.240 @sf 970 1102 p 49 c
t-rom.330 @sf 992 1095 p 46 c
16(Since)m
7(the)m
8 r 67 c
t-rom.240 @sf 1226 1102 p 50 c
t-rom.330 @sf 1255 1095 p (checksum)s
8(is)m
8 r 97 c
7(random)m
8(number)m
150 1151 p (with)s
9(respect)m
9(to)m
9(the)m
10 r 67 c
t-rom.240 @sf 523 1158 p 49 c
t-rom.330 @sf 554 1151 p (sequence)s
9(numbers,)m
10(there)m
9(is)m
9(at)m
9(least)m
10 r 97 c
12 r 50 c
cmsy8.300 @sf 1242 1135 p 0 c
t-rom.240 @sf (16)s
t-rom.330 @sf 1317 1151 p (probability)s
9(that)m
9(this)m
9(packet)m
150 1208 p (will)s
13(be)m
13(accepted)m
13(by)m
13(the)m
13 r 67 c
t-rom.240 @sf 625 1215 p 49 c
t-rom.330 @sf 660 1208 p (TCP)s
13(receiver)m
-1 r 46 c
t-rom.240 @sf 917 1191 p (29)s
t-rom.330 @sf 977 1208 p 84 c
-2 r 111 c
12(prevent)m
13(this,)m
13(after)m
13 r 97 c
13(CRC)m
13(error)m
13(indication)m
150 1264 p (from)s
14(the)m
14(framer)m
15(the)m
14(receiver)m
14(discards)m
14(packets)m
14(until)m
15(it)m
14(receives)m
14(either)m
14 r 97 c
t-romsc.330 @sf 14(compressed)m
1707 1271 p 23 2 ru
1733 1264 p (tcp)s
t-rom.330 @sf 150 1321 p (packet)s
9(with)m
10(the)m
9 r 67 c
9(bit)m
9(set)m
10(or)m
9(an)m
t-romsc.330 @sf 9(uncompressed)m
989 1327 p 23 2 ru
1015 1321 p (tcp)s
t-rom.330 @sf 10(packet.)m
16(I.e.,)m
10(packets)m
9(are)m
9(discarded)m
10(until)m
150 1377 p (the)s
11(receiver)m
12(gets)m
11(an)m
12(explicit)m
11(connection)m
12(number)m
-2 r 46 c
221 1441 p 84 c
-3 r 111 c
8(summarize)m
9(this)m
8(section,)m
10(there)m
8(are)m
9(two)m
9(dif)m
(ferent)s
7(types)m
9(of)m
9(errors:)m
16(per)m
(-packet)s
7(corruption)m
150 1498 p (and)s
14(per)m
(-conversation)s
14(loss-of-sync.)m
26(The)m
14(\014rst)m
14(type)m
14(is)m
15(detected)m
14(at)m
14(the)m
15(decompressor)m
14(from)m
14 r 97 c
150 1554 p (link-level)s
17(CRC)m
18(error)m
-1 r 44 c
18(the)m
17(second)m
18(at)m
17(the)m
17(TCP)m
18(receiver)m
17(from)m
17 r 97 c
18(\(guaranteed\))m
17(invalid)m
18(TCP)m
150 1611 p (checksum.)s
17(The)m
11(combination)m
11(of)m
11(these)m
11(two)m
11(independent)m
11(mechanisms)m
11(ensures)m
11(that)m
11(erroneous)m
150 1667 p (packets)s
11(are)m
12(discarded.)m
t-bol.360 @sf 150 1807 p (4.2)s
50(Err)m
(or)s
12 r 114 c
(ecovery)s
t-rom.330 @sf 150 1904 p (The)s
15(previous)m
15(section)m
15(noted)m
15(that)m
15(after)m
16 r 97 c
15(CRC)m
15(error)m
15(the)m
15(decompressor)m
15(will)m
15(introduce)m
15(TCP)m
150 1960 p (checksum)s
8(errors)m
8(in)m
8(every)m
8(uncompressed)m
8(packet.)m
16(Although)m
8(the)m
8(checksum)m
8(errors)m
8(prevent)m
8(data)m
150 2017 p (stream)s
14(corruption,)m
16(the)m
14(TCP)m
15(conversation)m
14(won')m
116 c
14(be)m
14(terribly)m
15(useful)m
14(until)m
15(the)m
14(decompressor)m
150 2073 p (again)s
11(generates)m
12(valid)m
11(packets.)m
18(How)m
11(can)m
11(this)m
12(be)m
11(forced)m
12(to)m
11(happen?)m
221 2137 p (The)s
15(decompressor)m
15(generates)m
16(invalid)m
15(packets)m
15(because)m
16(its)m
15(state)m
16(\(the)m
15(saved)m
15(`last)m
16(packet)m
150 2194 p (header)s
2('\))m
7(disagrees)m
8(with)m
8(the)m
7(compressor)m
2 r 39 c
-2 r 115 c
7(state.)m
16(An)m
t-romsc.330 @sf 8(uncompressed)m
1366 2201 p 23 2 ru
1392 2194 p (tcp)s
t-rom.330 @sf 7(packet)m
8(will)m
8(correct)m
150 2250 p (the)s
11(decompressor)m
1 r 39 c
-1 r 115 c
9(state.)m
17(Thus)m
11(error)m
10(recovery)m
11(amounts)m
10(to)m
11(forcing)m
10(an)m
11(uncompressed)m
10(packet)m
150 2307 p (out)s
11(of)m
12(the)m
11(compressor)m
12(whenever)m
11(the)m
12(decompressor)m
11(is)m
12(\(or)m
11(might)m
12(be\))m
11(confused.)m
150 2354 p 660 2 ru
t-rom.180 @sf 187 2390 p (27)s
t-rom.270 @sf 217 2406 p (This)s
10(is)m
9(an)m
10(example)m
9(of)m
9 r 97 c
10(generic)m
9(problem)m
9(with)m
10(dif)m
(ferential)s
9(or)m
9(delta)m
9(encodings)m
10(known)m
9(as)m
9(\\losing)m
10(DC".)m
t-rom.180 @sf 187 2445 p (28)s
t-rom.270 @sf 217 2461 p (Many)s
10(system)m
9(managers)m
10(claim)m
9(that)m
9(holes)m
10(in)m
9(an)m
9(NNTP)m
10(stream)m
9(are)m
10(more)m
9(valuable)m
9(than)m
10(the)m
9(data.)m
t-rom.180 @sf 187 2501 p (29)s
t-rom.270 @sf 217 2516 p 87 c
(ith)s
10(worst-case)m
12(traf)m
(\014c,)s
11(this)m
11(probability)m
12(translates)m
11(to)m
12(one)m
11(undetected)m
11(error)m
12(every)m
11(three)m
12(hours)m
11(over)m
11 r 97 c
12(9600)m
150 2562 p (baud)s
9(line)m
10(with)m
9 r 97 c
9(30%)m
10(error)m
9(rate\).)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(16])m
@eop
restore
%%Page: 17 19
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
17 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
150 241 p 26049576 15108745 526254 27891466 37166694 49270538 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:error.forward
%%%CreationDate: 12/24/89 8:41 PM
%%%DocumentFonts: Helvetica
%%%+ Symbol
%%BoundingBox: 8 424 565 749
%%%Pages:(atend)
%%%EndComments
0 780 translate .75 -.75 scale
/vmstate save def
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
/np {} d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
systemdict /setcmykcolor known not { /setcmykcolor {pop pop pop pop 0 SG} d} if
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag 2 copy known {get not}{pop pop true}I }{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{/bp x /ep x g stroke G
currentlinewidth dup .24 lt {pop .24}i
D -10 * D /hl x -2 ? /os x 2 * /hw x
flattenpath /out? false d
bp{g {/by x /bx x}
{2 copy by eq e bx eq and {pop pop}{/out? true d}I out? {exit}i}
/np load dup pathforall N bx by ah G}i
ep{/out? false d reversepath {/ey x /ex x}
{2 copy ey eq e ex eq and {pop pop}{/out? true d}I out? {exit}i}
/np load dup pathforall N ex ey ah}i}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css CP G T 0 0 M}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG pop 0 ne {pop}i fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/fn? {FontDirectory exch known} b
/mof
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/muf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/of {dup fn? {pop pop}{mof}I}b
/uf {1 index fn? {pop pop pop}{muf}I}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}d
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
pack? {packstate setpacking}i
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
(Symbol) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
false SPOLY_INIT
/noerr true def
0 1 1 0 549.499 203.999 fc
newpath
-31.5 -17.999 M
18.9 -17.999 L
31.5 -17.999 L
31.5 0 L
31.5 17.999 L
31.5 17.999 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 554 343.5 fc
newpath
27 -22.5 M
27 0 L
27 22.5 L
16.2 22.5 L
-27 22.5 L
-27 22.5 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 162.499 348 fc
newpath
31.5 17.999 M
-18.9 17.999 L
-31.5 17.999 L
-31.5 0 L
-31.5 -17.999 L
-31.5 -17.999 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 158 208.5 fc
newpath
-26.999 22.5 M
-26.999 0 L
-26.999 -22.5 L
-14.999 -22.5 L
26.999 -22.5 L
26.999 -22.5 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
g 0 1 1 0 396.499 366 fc
newpath
85.499 0 M
-85.499 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 328.999 186 fc
newpath
-72 0 M
72 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 248 186 fc
newpath
54 36 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 248 366 fc
newpath
54 36 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 464 186 fc
newpath
54 36 0 360 a
g 0.95 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 464 366 fc
newpath
54 36 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 130.999 275.999 fc
newpath
44.999 44.999 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 580.999 275.999 fc
newpath
44.999 44.999 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 -1 0 131 280.5 fc
/myshow /show load def
0 SG
0 8 M
/Helvetica findfont 18 scalefont setfont
{
(TCP) show
}cs
0 -11 M
{
(sender) show
}cs
G
g 0 1 -1 0 581 280.5 fc
/myshow /show load def
0 SG
0 8 M
/Helvetica findfont 18 scalefont setfont
{
(TCP) show
}cs
0 -11 M
{
(receiver) show
}cs
G
g 0 1 -1 0 248 186.999 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(compress) show
}cs
0 -15 M
{
(\(forward\)) show
}cs
G
g 0 1 -1 0 464 366 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(compress) show
}cs
0 -15 M
{
(\(reverse\)) show
}cs
G
g 0 1 -1 0 464 186.999 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(decompress) show
}cs
0 -15 M
{
(\(forward\)) show
}cs
G
g 0 1 -1 0 248 365.999 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(decompress) show
}cs
0 -15 M
{
(\(reverse\)) show
}cs
G
g 0 1 -1 0 333.499 208.499 fc
/myshow /show load def
0 SG
-20 0 M
/Helvetica findfont 14 scalefont setfont
{
(data) show
}ls
G
g 0 1 1 0 361 204 fc
newpath
-12.999 0 M
12.999 0 L
1 setlinewidth 0 SG true false da
G
g 0 1 -1 0 387.5 352.499 fc
/myshow /show load def
0 SG
-21 0 M
/Helvetica findfont 14 scalefont setfont
{
(acks) show
}ls
G
g 0 1 1 0 347.5 348 fc
newpath
-13.5 0 M
13.5 0 L
1 setlinewidth 0 SG false true da
G
g 0 1 -1 0 463.999 118.499 fc
/myshow /show load def
0 SG
0 19 M
/Helvetica findfont 12 scalefont setfont
{
(Corrupted state ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 5 M
{
(re-constructed) show
}cs
0 -9 M
{
(packets with tcp) show
}cs
0 -23 M
{
(checksum errors) show
}cs
G
g 0 1 -1 0 679.999 271.5 fc
/myshow /show load def
0 SG
0 11 M
/Helvetica findfont 12 scalefont setfont
{
(Checksum) show
}cs
0 -3 M
{
(errors ) show
/Symbol findfont 12 scalefont setfont
(\336) show
/Helvetica findfont 12 scalefont setfont
( data) show
}cs
0 -17 M
{
(not acked) show
}cs
G
g 0 1 -1 0 45.499 276 fc
/myshow /show load def
0 SG
0 15 M
/Helvetica findfont 12 scalefont setfont
{
(No acks ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 1 M
{
(data) show
}cs
0 -13 M
{
(retransmitted) show
}cs
G
g 0 1 -1 0 239 86.999 fc
/myshow /show load def
0 SG
0 33 M
/Helvetica findfont 12 scalefont setfont
{
(Retransmit ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 19 M
{
(negative or zero) show
}cs
0 5 M
{
(sequence number) show
}cs
0 -9 M
{
(change ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 -23 M
{
(uncompressed) show
}cs
0 -37 M
{
(packet) show
}cs
G
g 0 1 -1 0 459.5 50.999 fc
/myshow /show load def
0 SG
-1 -3 M
/Helvetica findfont 12 scalefont setfont
{
(State corrected) show
}cs
G
false SPOLY_INIT
/noerr true def
0 1 1 0 599 177 fc
newpath
-72 -63 M
72 -63 L
72 63 L
72 63 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
1 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 356 388.5 fc
newpath
315 -85.5 M
315 85.5 L
9 85.5 L
-315 85.5 L
-315 -85.5 L
-315 -85.5 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
1 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 104 168 fc
newpath
-63 72 M
-63 -36 L
63 -72 L
63 -72 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
1 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
g 0 1 1 0 351.5 60 fc
newpath
-49.5 9 M
49.5 -9 L
1 setlinewidth 0 SG true false da
G
%------ End Main Program ------%
end
showpage pop
vmstate restore
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 481 1341 p (Figure)s
11(6:)m
h-med.330 @sf 17(Forward)m
13(path)m
13(error)m
12(correction)m
13(sequence)m
t-rom.330 @sf 221 1477 p (The)s
8(\014rst)m
8(thought)m
8(is)m
8(to)m
8(take)m
8(advantage)m
8(of)m
8(the)m
8(full)m
8(duplex)m
8(communication)m
8(link)m
8(and)m
8(have)m
8(the)m
150 1533 p (decompressor)s
10(send)m
10(something)m
11(to)m
10(the)m
10(compressor)m
10(requesting)m
10(an)m
11(uncompressed)m
10(packet.)m
16(This)m
150 1590 p (is)s
14(clearly)m
14(undesirable)m
15(since)m
14(it)m
14(constrains)m
14(the)m
15(topology)m
14(more)m
14(than)m
14(the)m
14(minimum)m
15(suggested)m
150 1646 p (in)s
13(sec.)m
12 r 50 c
13(and)m
12(requires)m
13(that)m
12 r 97 c
13(great)m
12(deal)m
13(of)m
12(protocol)m
13(be)m
12(added)m
13(to)m
12(both)m
13(the)m
12(decompressor)m
13(and)m
150 1703 p (compressor)s
-2 r 46 c
29 r 65 c
16(little)m
15(thought)m
16(convinces)m
16(one)m
15(that)m
16(this)m
15(alternative)m
16(is)m
16(not)m
15(only)m
16(undesirable,)m
150 1759 p (it)s
13(simply)m
14(won')m
116 c
12(work:)m
22(Compressed)m
13(packets)m
13(are)m
14(small)m
13(and)m
14(it')m
-2 r 115 c
13(likely)m
13(that)m
13 r 97 c
14(line)m
13(hit)m
14(will)m
13(so)m
150 1816 p (completely)s
13(obliterate)m
14(one)m
13(that)m
14(the)m
13(decompressor)m
14(will)m
13(get)m
14(nothing)m
13(at)m
14(all.)m
23(Thus)m
13(packets)m
14(are)m
150 1872 p (reconstructed)s
9(incorrectly)m
9(\(because)m
9(of)m
10(the)m
9(missing)m
9(compressed)m
9(packet\))m
9(but)m
9(only)m
10(the)m
9(TCP)m
9(end)m
150 1928 p (points,)s
11(not)m
12(the)m
11(decompressor)m
44 c
10(know)m
11(that)m
12(the)m
11(packets)m
12(are)m
11(incorrect.)m
221 1991 p (But)s
12(the)m
13(TCP)m
13(end)m
13(points)m
13(know)m
12(about)m
13(the)m
13(error)m
13(and)m
12(TCP)m
13(is)m
13 r 97 c
13(reliable)m
13(protocol)m
12(designed)m
150 2048 p (to)s
14(run)m
14(over)m
15(unreliable)m
14(media.)m
25(This)m
15(means)m
14(the)m
14(end)m
14(points)m
14(must)m
15(eventually)m
14(take)m
14(some)m
14(sort)m
150 2104 p (of)s
16(error)m
15(recovery)m
16(action)m
16(and)m
15(there')m
-1 r 115 c
15(an)m
15(obvious)m
16(trigger)m
16(for)m
15(the)m
16(compressor)m
16(to)m
15(resync)m
16(the)m
150 2161 p (decompressor:)s
17(send)m
12(uncompressed)m
11(packets)m
12(whenever)m
11(TCP)m
11(is)m
12(doing)m
11(error)m
12(recovery)m
-2 r 46 c
221 2223 p (But)s
12(how)m
13(does)m
12(the)m
13(compressor)m
12(recognize)m
13(TCP)m
13(error)m
12(recovery?)m
21(Consider)m
12(the)m
13(schematic)m
150 2280 p (TCP)s
14(data)m
15(transfer)m
14(of)m
14(\014g.)m
15(6.)m
25(The)m
15(confused)m
14(decompressor)m
14(is)m
15(in)m
14(the)m
14(forward)m
14(\(data)m
15(transfer\))m
150 2336 p (half)s
10(of)m
11(the)m
10(TCP)m
11(conversation.)m
16(The)m
11(receiving)m
10(TCP)m
11(discards)m
10(packets)m
10(rather)m
11(than)m
10(acking)m
11(them)m
150 2393 p (\(because)s
15(of)m
14(the)m
15(checksum)m
15(errors\),)m
15(the)m
15(sending)m
15(TCP)m
14(eventually)m
15(times)m
15(out)m
15(and)m
14(retransmits)m
150 2449 p 97 c
13(packet,)m
13(and)m
12(the)m
13(forward)m
13(path)m
13(compressor)m
12(\014nds)m
13(that)m
13(the)m
12(dif)m
(ference)s
12(between)m
13(the)m
13(sequence)m
150 2506 p (number)s
9(in)m
9(the)m
9(retransmitted)m
9(packet)m
9(and)m
9(the)m
9(sequence)m
9(number)m
9(in)m
9(the)m
9(last)m
9(packet)m
9(seen)m
9(is)m
9(either)m
150 2562 p (negative)s
11(\(if)m
12(there)m
11(were)m
12(multiple)m
11(packets)m
12(in)m
11(transit\))m
12(or)m
11(zero)m
11(\(one)m
12(packet)m
11(in)m
12(transit\).)m
17(The)m
11(\014rst)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(17])m
@eop
restore
%%Page: 18 20
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
18 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
150 241 p 26049576 13806270 526254 26312704 36772003 45718323 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:error.reverse
%%%CreationDate: 12/24/89 9:04 PM
%%%DocumentFonts: Helvetica
%%%+ Symbol
%%BoundingBox: 8 400 559 695
%%%Pages:(atend)
%%%EndComments
0 780 translate .75 -.75 scale
/vmstate save def
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
/np {} d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
systemdict /setcmykcolor known not { /setcmykcolor {pop pop pop pop 0 SG} d} if
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag 2 copy known {get not}{pop pop true}I }{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{/bp x /ep x g stroke G
currentlinewidth dup .24 lt {pop .24}i
D -10 * D /hl x -2 ? /os x 2 * /hw x
flattenpath /out? false d
bp{g {/by x /bx x}
{2 copy by eq e bx eq and {pop pop}{/out? true d}I out? {exit}i}
/np load dup pathforall N bx by ah G}i
ep{/out? false d reversepath {/ey x /ex x}
{2 copy ey eq e ex eq and {pop pop}{/out? true d}I out? {exit}i}
/np load dup pathforall N ex ey ah}i}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css CP G T 0 0 M}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG pop 0 ne {pop}i fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/fn? {FontDirectory exch known} b
/mof
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/muf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/of {dup fn? {pop pop}{mof}I}b
/uf {1 index fn? {pop pop pop}{muf}I}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}d
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
pack? {packstate setpacking}i
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
(Symbol) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
false SPOLY_INIT
/noerr true def
0 1 1 0 549.499 203.999 fc
newpath
-31.5 -17.999 M
18.9 -17.999 L
31.5 -17.999 L
31.5 0 L
31.5 17.999 L
31.5 17.999 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 554 343.5 fc
newpath
27 -22.5 M
27 0 L
27 22.5 L
16.2 22.5 L
-27 22.5 L
-27 22.5 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 162.499 348 fc
newpath
31.5 17.999 M
-18.9 17.999 L
-31.5 17.999 L
-31.5 0 L
-31.5 -17.999 L
-31.5 -17.999 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 158 208.5 fc
newpath
-26.999 22.5 M
-26.999 0 L
-26.999 -22.5 L
-14.999 -22.5 L
26.999 -22.5 L
26.999 -22.5 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
2 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
g 0 1 1 0 396.499 366 fc
newpath
85.499 0 M
-85.499 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 328.999 186 fc
newpath
-72 0 M
72 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 248 186 fc
newpath
54 36 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 248 366 fc
newpath
54 36 0 360 a
g 0.95 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 464 186 fc
newpath
54 36 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 464 366 fc
newpath
54 36 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 130.999 275.999 fc
newpath
44.999 44.999 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 1 0 580.999 275.999 fc
newpath
44.999 44.999 0 360 a
g 1 SG fill G
1 setlinewidth 0 SG stroke
G
g 0 1 -1 0 131 280.5 fc
/myshow /show load def
0 SG
0 8 M
/Helvetica findfont 18 scalefont setfont
{
(TCP) show
}cs
0 -11 M
{
(sender) show
}cs
G
g 0 1 -1 0 581 280.5 fc
/myshow /show load def
0 SG
0 8 M
/Helvetica findfont 18 scalefont setfont
{
(TCP) show
}cs
0 -11 M
{
(receiver) show
}cs
G
g 0 1 -1 0 248 186.999 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(compress) show
}cs
0 -15 M
{
(\(forward\)) show
}cs
G
g 0 1 -1 0 464 366 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(compress) show
}cs
0 -15 M
{
(\(reverse\)) show
}cs
G
g 0 1 -1 0 464 186.999 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(decompress) show
}cs
0 -15 M
{
(\(forward\)) show
}cs
G
g 0 1 -1 0 248 365.999 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 16 scalefont setfont
{
(decompress) show
}cs
0 -15 M
{
(\(reverse\)) show
}cs
G
g 0 1 -1 0 333.499 208.499 fc
/myshow /show load def
0 SG
-20 0 M
/Helvetica findfont 14 scalefont setfont
{
(data) show
}ls
G
g 0 1 1 0 361 204 fc
newpath
-12.999 0 M
12.999 0 L
1 setlinewidth 0 SG true false da
G
g 0 1 -1 0 387.5 352.499 fc
/myshow /show load def
0 SG
-21 0 M
/Helvetica findfont 14 scalefont setfont
{
(acks) show
}ls
G
g 0 1 1 0 347.5 348 fc
newpath
-13.5 0 M
13.5 0 L
1 setlinewidth 0 SG false true da
G
g 0 1 -1 0 247.999 442.5 fc
/myshow /show load def
0 SG
0 20 M
/Helvetica findfont 12 scalefont setfont
{
(Corrupted state ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 6 M
{
(re-constructed) show
}cs
0 -8 M
{
(acks with tcp) show
}cs
0 -22 M
{
(checksum errors) show
}cs
G
g 0 1 -1 0 671 275.999 fc
/myshow /show load def
0 SG
0 33 M
/Helvetica findfont 12 scalefont setfont
{
(Already) show
}cs
0 19 M
{
(received data) show
}cs
0 5 M
/Symbol findfont 12 scalefont setfont
{
(\336) show
/Helvetica findfont 12 scalefont setfont
( \(duplicate\)) show
}cs
0 -9 M
/Helvetica findfont 12 scalefont setfont
{
(ack for next) show
}cs
0 -23 M
{
(expected seq.) show
}cs
0 -37 M
{
(number) show
}cs
G
g 0 1 -1 0 45.499 276 fc
/myshow /show load def
0 SG
0 15 M
/Helvetica findfont 12 scalefont setfont
{
(Corrupted) show
}cs
0 1 M
{
(acks ) show
/Symbol findfont 12 scalefont setfont
(\336) show
/Helvetica findfont 12 scalefont setfont
( data) show
}cs
0 -13 M
{
(retransmitted) show
}cs
G
g 0 1 -1 0 464 464.999 fc
/myshow /show load def
0 SG
0 33 M
/Helvetica findfont 12 scalefont setfont
{
(Duplicate ack ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 19 M
{
(no ack, seq, win or) show
}cs
0 5 M
{
(urg change ) show
/Symbol findfont 12 scalefont setfont
(\336) show
}cs
0 -9 M
{
(uncompressed) show
}cs
0 -23 M
{
(packet) show
}cs
G
g 0 1 -1 0 252.5 501 fc
/myshow /show load def
0 SG
-1 -3 M
/Helvetica findfont 12 scalefont setfont
{
(State corrected) show
}cs
G
false SPOLY_INIT
/noerr true def
0 1 1 0 113 370.5 fc
newpath
72 67.499 M
-72 67.499 L
-72 -67.499 L
-72 -67.499 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
1 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 356 177 fc
newpath
-315 63 M
-315 -63 L
-9 -63 L
315 -63 L
315 36 L
315 36 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
1 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
false SPOLY_INIT
/noerr true def
0 1 1 0 603.5 383.999 fc
newpath
67.5 -54 M
67.5 18 L
-67.5 54 L
-67.5 54 noerr{{lineto}stopped{/noerr false def}if}{pop pop}ifelse
noerr{
1 setlinewidth 0 SG true false da
}{clear}ifelse
SPOLY_END
g 0 1 1 0 359.5 480.25 fc
newpath
48.5 -11.75 M
-48.5 11.75 L
1 setlinewidth 0 SG true false da
G
%------ End Main Program ------%
end
showpage pop
vmstate restore
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 479 1259 p (Figure)s
12(7:)m
h-med.330 @sf 17(Reverse)m
13(path)m
12(error)m
13(correction)m
13(sequence)m
t-rom.330 @sf 150 1394 p (case)s
12(is)m
12(detected)m
12(in)m
13(the)m
12(compression)m
12(step)m
12(that)m
12(computes)m
12(sequence)m
12(number)m
12(dif)m
(ferences.)s
19(The)m
150 1450 p (second)s
14(case)m
15(is)m
14(detected)m
15(in)m
14(the)m
15(step)m
14(that)m
15(checks)m
14(the)m
15(`special)m
14(case')m
14(encodings)m
15(but)m
14(needs)m
15(an)m
150 1506 p (additional)s
15(test:)m
23(It')m
-1 r 115 c
13(fairly)m
15(common)m
14(for)m
15(an)m
15(interactive)m
14(conversation)m
15(to)m
15(send)m
14 r 97 c
15(dataless)m
14(ack)m
150 1563 p (packet)s
14(followed)m
14(by)m
14 r 97 c
14(data)m
14(packet.)m
25(The)m
14(ack)m
14(and)m
14(data)m
14(packet)m
14(will)m
14(have)m
14(the)m
14(same)m
14(sequence)m
150 1619 p (numbers)s
9(yet)m
10(the)m
9(data)m
10(packet)m
9(is)m
10(not)m
9 r 97 c
10(retransmission.)m
16 r 84 c
-2 r 111 c
9(prevent)m
9(sending)m
10(an)m
9(unnecessary)m
10(un-)m
150 1676 p (compressed)s
10(packet,)m
10(the)m
9(length)m
10(of)m
9(the)m
10(previous)m
10(packet)m
9(should)m
10(be)m
9(checked)m
10(and,)m
10(if)m
10(it)m
9(contained)m
150 1732 p (data,)s
11 r 97 c
12(zero)m
11(sequence)m
12(number)m
11(change)m
12(must)m
11(indicate)m
12 r 97 c
11(retransmission.)m
221 1795 p 65 c
7(confused)m
8(decompressor)m
7(in)m
8(the)m
7(reverse)m
8(\(ack\))m
7(half)m
8(of)m
7(the)m
8(conversation)m
8(is)m
7(as)m
8(easy)m
7(to)m
8(detect)m
150 1851 p (\(\014g.)s
9(7\):)m
16(The)m
8(sending)m
9(TCP)m
9(discards)m
8(acks)m
9(\(because)m
9(they)m
9(contain)m
8(checksum)m
9(errors\),)m
9(eventually)m
150 1908 p (times)s
14(out,)m
14(then)m
13(retransmits)m
14(some)m
13(packet.)m
23(The)m
14(receiving)m
13(TCP)m
14(thus)m
14(gets)m
13 r 97 c
14(duplicate)m
13(packet)m
150 1964 p (and)s
12(must)m
11(generate)m
12(an)m
11(ack)m
12(for)m
11(the)m
12(next)m
11(expected)m
12(sequence)m
11(number[)m
49 c
49 c
44 c
10(p.)m
12(69].)m
17(This)m
12(ack)m
11(will)m
150 2020 p (be)s
15 r 97 c
15(duplicate)m
15(of)m
15(the)m
15(last)m
15(ack)m
15(the)m
15(receiver)m
15(generated)m
14(so)m
15(the)m
15(reverse-path)m
15(compressor)m
15(will)m
150 2077 p (\014nd)s
12(no)m
12(ack,)m
12(seq)m
12(number)m
-1 r 44 c
11(window)m
12(or)m
12(ur)m
103 c
11(change.)m
19(If)m
12(this)m
11(happens)m
12(for)m
12 r 97 c
12(packet)m
12(that)m
12(contains)m
150 2133 p (no)s
13(data,)m
14(the)m
13(compressor)m
13(assumes)m
13(it)m
13(is)m
13 r 97 c
13(duplicate)m
13(ack)m
14(sent)m
13(in)m
13(response)m
13(to)m
13 r 97 c
13(retransmit)m
13(and)m
150 2190 p (sends)s
11(an)m
t-romsc.330 @sf 12(uncompressed)m
614 2196 p 23 2 ru
641 2190 p (tcp)s
t-rom.330 @sf 11(packet.)m
t-rom.240 @sf 853 2173 p (30)s
150 2464 p 660 2 ru
t-rom.180 @sf 187 2501 p (30)s
t-rom.270 @sf 217 2516 p (The)s
12(packet)m
12(could)m
11(be)m
12 r 97 c
11(zero-window)m
12(probe)m
11(rather)m
12(than)m
12 r 97 c
11(retransmitted)m
12(ack)m
11(but)m
12(window)m
11(probes)m
12(should)m
11(be)m
150 2562 p (infrequent)s
9(and)m
10(it)m
9(does)m
9(no)m
10(harm)m
9(to)m
10(send)m
9(them)m
9(uncompressed.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(18])m
@eop
restore
%%Page: 19 21
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
19 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.420 @sf 150 233 p 53 c
58(Con\014gurable)m
15(parameters)m
14(and)m
15(tuning)m
t-bol.360 @sf 150 341 p (5.1)s
50(Compr)m
(ession)s
12(con\014guration)m
t-rom.330 @sf 150 431 p (There)s
13(are)m
14(two)m
13(con\014guration)m
13(parameters)m
13(associated)m
14(with)m
13(header)m
13(compression:)m
21(Whether)m
13(or)m
150 487 p (not)s
11(compressed)m
12(packets)m
11(should)m
11(be)m
12(sent)m
11(on)m
11 r 97 c
11(particular)m
12(line)m
11(and,)m
11(if)m
12(so,)m
11(how)m
11(many)m
12(state)m
11(slots)m
150 543 p (\(saved)s
10(packet)m
10(headers\))m
11(to)m
10(reserve.)m
17(There)m
10(is)m
10(also)m
10(one)m
11(link-level)m
10(con\014guration)m
10(parameter)m
-1 r 44 c
10(the)m
150 600 p (maximum)s
12(packet)m
12(size)m
13(or)m
12(MTU,)m
12(and)m
12(one)m
13(front-end)m
12(con\014guration)m
12(parameter)m
-1 r 44 c
12(data)m
12(compres-)m
150 656 p (sion,)s
10(that)m
10(interact)m
10(with)m
9(header)m
10(compression.)m
17(Compression)m
10(con\014guration)m
9(is)m
10(discussed)m
10(in)m
10(this)m
150 713 p (section.)s
17(MTU)m
12(and)m
11(data)m
12(compression)m
11(are)m
11(discussed)m
12(in)m
11(the)m
12(next)m
11(two)m
12(sections.)m
221 772 p (There)s
15(are)m
16(some)m
16(hosts)m
16(\(e.g.,)m
17(low)m
16(end)m
16(PCs\))m
16(which)m
16(may)m
16(not)m
16(have)m
16(enough)m
15(processor)m
16(or)m
150 828 p (memory)s
13(resources)m
13(to)m
12(implement)m
13(this)m
13(compression.)m
21(There)m
13(are)m
13(also)m
13(rare)m
12(link)m
13(or)m
13(application)m
150 885 p (characteristics)s
14(that)m
15(make)m
14(header)m
14(compression)m
15(unnecessary)m
14(or)m
14(undesirable.)m
26(And)m
14(there)m
15(are)m
150 941 p (many)s
9(existing)m
9(SLIP)m
9(links)m
9(that)m
10(do)m
9(not)m
9(currently)m
9(use)m
9(this)m
9(style)m
9(of)m
9(header)m
9(compression.)m
17(For)m
9(the)m
150 998 p (sake)s
10(of)m
10(interoperability)m
-2 r 44 c
10(serial)m
10(line)m
10(IP)m
10(drivers)m
10(that)m
10(allow)m
10(header)m
10(compression)m
11(should)m
10(include)m
150 1054 p (some)s
11(sort)m
12(of)m
11(user)m
12(con\014gurable)m
11(\015ag)m
12(to)m
11(disable)m
12(compression)m
11(\(see)m
12(appendix)m
11(B.2\).)m
t-rom.240 @sf 1588 1038 p (31)s
t-rom.330 @sf 221 1113 p (If)s
12(compression)m
13(is)m
13(enabled,)m
13(the)m
12(compressor)m
13(must)m
13(be)m
12(sure)m
13(to)m
13(never)m
12(send)m
13 r 97 c
13(connection)m
13(id)m
150 1170 p (\(state)s
12(index\))m
13(that)m
12(will)m
12(be)m
12(dropped)m
13(by)m
12(the)m
12(decompressor)m
-1 r 46 c
18(E.g.,)m
13 r 97 c
12(black)m
12(hole)m
13(is)m
12(created)m
12(if)m
12(the)m
150 1226 p (decompressor)s
11(has)m
11(sixteen)m
11(slots)m
12(and)m
11(the)m
11(compressor)m
11(uses)m
11(twenty)m
-2 r 46 c
t-rom.240 @sf 1318 1210 p (32)s
t-rom.330 @sf 1373 1226 p (Also,)s
11(if)m
11(the)m
12(compressor)m
150 1283 p (is)s
15(allowed)m
15(too)m
15(few)m
15(slots,)m
16(the)m
15(LRU)m
15(allocator)m
15(will)m
15(thrash)m
15(and)m
15(most)m
15(packets)m
15(will)m
15(be)m
15(sent)m
15(as)m
t-romsc.330 @sf 150 1339 p (uncompressed)s
446 1346 p 23 2 ru
473 1339 p (tcp)s
t-rom.330 @sf 46 c
17 r 84 c
-3(oo)m
11(many)m
11(slots)m
12(and)m
11(memory)m
12(is)m
11(wasted.)m
221 1398 p (Experimenting)s
13(with)m
14(dif)m
(ferent)s
13(sizes)m
13(over)m
14(the)m
14(past)m
13(year)m
-1 r 44 c
14(the)m
13(author)m
14(has)m
14(found)m
13(that)m
14(eight)m
150 1455 p (slots)s
12(will)m
13(thrash)m
12(\(i.e.,)m
13(the)m
12(performance)m
13(degradation)m
12(is)m
13(noticeable\))m
12(when)m
12(many)m
13(windows)m
12(on)m
150 1511 p 97 c
16(multi-window)m
17(workstation)m
16(are)m
16(simultaneously)m
17(in)m
16(use)m
16(or)m
17(the)m
16(workstation)m
16(is)m
17(being)m
16(used)m
150 1568 p (as)s
18 r 97 c
18(gateway)m
18(for)m
18(three)m
17(or)m
18(more)m
18(other)m
18(machines.)m
37(Sixteen)m
17(slots)m
18(were)m
18(never)m
18(observed)m
18(to)m
150 1624 p (thrash.)s
17(\(This)m
11(may)m
11(simply)m
11(be)m
12(because)m
11 r 97 c
11(9600)m
11(bps)m
11(line)m
11(split)m
11(more)m
11(than)m
11(16)m
12(ways)m
11(is)m
11(already)m
11(so)m
150 1681 p (overloaded)s
11(that)m
12(the)m
11(additional)m
12(degradation)m
11(from)m
12(round-robbining)m
11(slots)m
12(is)m
11(negligible.\))m
221 1740 p (Each)s
8(slot)m
8(must)m
8(be)m
8(lar)m
(ge)s
7(enough)m
8(to)m
8(hold)m
8 r 97 c
8(maximum)m
8(length)m
8(TCP/IP)m
8(header)m
8(of)m
8(128)m
8(bytes)m
t-rom.240 @sf 1761 1723 p (33)s
t-rom.330 @sf 150 1796 p (so)s
14(16)m
13(slots)m
14(occupy)m
14(2KB)m
13(of)m
14(memory)m
-2 r 46 c
23(In)m
13(these)m
14(days)m
13(of)m
14 r 52 c
14(Mbit)m
13(RAM)m
14(chips,)m
14(2KB)m
14(seems)m
13(so)m
150 1853 p (little)s
11(memory)m
12(that)m
11(the)m
12(author)m
11(recommends)m
12(the)m
11(following)m
12(con\014guration)m
11(rules:)m
187 1942 p (\(1\))s
23(If)m
9(the)m
10(framing)m
9(protocol)m
9(does)m
9(not)m
9(allow)m
10(negotiation,)m
9(the)m
10(compressor)m
9(and)m
9(decompressor)m
264 1999 p (should)s
11(provide)m
12(sixteen)m
11(slots,)m
11(zero)m
12(through)m
11(\014fteen.)m
150 2034 p 660 2 ru
t-rom.180 @sf 187 2071 p (31)s
t-rom.270 @sf 217 2086 p (The)s
14(PPP)m
13(protocol)m
14(in)m
13 r 91 c
57 c
93 c
14(allows)m
13(the)m
14(end)m
13(points)m
14(to)m
13(negotiate)m
14(compression)m
13(so)m
14(there)m
13(is)m
14(no)m
13(interoperability)m
150 2132 p (problem.)s
22(However)m
44 c
11(there)m
13(should)m
12(still)m
12(be)m
12 r 97 c
12(provision)m
12(for)m
12(the)m
12(system)m
12(manager)m
12(at)m
13(each)m
12(end)m
12(to)m
12(control)m
12(whether)m
150 2178 p (compression)s
13(is)m
13(negotiated)m
14(on)m
13(or)m
13(of)m
(f.)s
25(And,)m
14(obviously)m
-1 r 44 c
13(compression)m
13(should)m
13(default)m
14(to)m
13(`of)m
102 c
1 r 39 c
13(until)m
14(it)m
13(has)m
13(been)m
150 2223 p (negotiated)s
9(`on'.)m
t-rom.180 @sf 187 2263 p (32)s
t-rom.270 @sf 217 2279 p (Strictly)s
14(speaking,)m
15(there')m
-1 r 115 c
12(no)m
14(reason)m
13(why)m
14(the)m
14(connection)m
13(id)m
14(should)m
13(be)m
14(treated)m
14(as)m
13(an)m
14(array)m
13(index.)m
27(If)m
14(the)m
150 2324 p (decompressor)s
1 r 39 c
-1 r 115 c
12(states)m
12(were)m
12(kept)m
12(in)m
12 r 97 c
13(hash)m
12(table)m
12(or)m
12(other)m
12(associative)m
13(structure,)m
13(the)m
12(connection)m
12(id)m
12(would)m
12(be)m
13 r 97 c
150 2370 p (key)s
-1 r 44 c
11(not)m
12(an)m
11(index,)m
13(and)m
12(performance)m
11(with)m
12(too)m
12(few)m
12(decompressor)m
11(slots)m
12(would)m
12(only)m
12(degrade)m
12(enormously)m
11(rather)m
150 2416 p (than)s
12(failing)m
13(altogether)m
-1 r 46 c
22(However)m
-1 r 44 c
13(an)m
12(associative)m
12(structure)m
13(is)m
12(substantially)m
13(more)m
12(costly)m
12(in)m
13(code)m
12(and)m
13(cpu)m
12(time)m
150 2461 p (and,)s
12(given)m
11(the)m
11(small)m
11(per)m
(-slot)s
11(cost)m
11(\(128)m
11(bytes)m
11(of)m
11(memory\),)m
12(it)m
11(seems)m
11(reasonable)m
12(to)m
11(design)m
11(for)m
11(slot)m
11(arrays)m
12(at)m
11(the)m
150 2507 p (decompressor)s
9(and)m
10(some)m
9(\(possibly)m
9(implicit\))m
10(communication)m
9(of)m
10(the)m
9(array)m
9(size.)m
t-rom.180 @sf 187 2546 p (33)s
t-rom.270 @sf 217 2562 p (The)s
10(maximum)m
9(header)m
10(length,)m
9(\014xed)m
9(by)m
10(the)m
9(protocol)m
9(design,)m
10(is)m
9(64)m
10(bytes)m
9(of)m
9(IP)m
10(and)m
9(64)m
9(bytes)m
10(of)m
9(TCP)m
-3 r 46 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(19])m
@eop
restore
%%Page: 20 22
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<C00060E000E07001C03803801C07000E0E00071C0003B80001F00001F00003B800071C000E0E00
1C07003803807001C0E000E0C00060> 24 18 -5 0 29.864] 2 @dc
20 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 187 233 p (\(2\))s
23(If)m
14(the)m
13(framing)m
13(protocol)m
14(allows)m
13(negotiation,)m
14(any)m
13(mutually)m
14(agreeable)m
13(number)m
13(of)m
14(slots)m
264 289 p (from)s
10 r 49 c
11(to)m
11(256)m
11(should)m
10(be)m
11(negotiable.)m
t-rom.240 @sf 916 273 p (34)s
t-rom.330 @sf 971 289 p (If)s
11(number)m
11(of)m
10(slots)m
11(is)m
11(not)m
11(negotiated,)m
10(or)m
11(until)m
11(it)m
264 346 p (is)s
11(negotiated,)m
12(both)m
11(sides)m
11(should)m
12(assume)m
11(sixteen.)m
187 461 p (\(3\))s
23(If)m
11(you)m
11(have)m
11(complete)m
11(control)m
11(of)m
11(all)m
10(the)m
11(machines)m
11(at)m
11(both)m
11(ends)m
11(of)m
11(every)m
11(link)m
11(and)m
11(none)m
264 517 p (of)s
11(them)m
11(will)m
11(ever)m
11(be)m
11(used)m
11(to)m
11(talk)m
11(to)m
11(machines)m
11(outside)m
11(of)m
12(your)m
11(control,)m
11(you)m
11(are)m
11(free)m
11(to)m
264 574 p (con\014gure)s
12(them)m
12(however)m
12(you)m
12(please,)m
13(ignoring)m
12(the)m
12(above.)m
20(However)m
-1 r 44 c
11(when)m
12(your)m
13(little)m
264 630 p (eastern-block)s
11(dictatorship)m
12(collapses)m
11(\(as)m
11(they)m
12(all)m
11(eventually)m
12(seem)m
11(to\),)m
12(be)m
11(aware)m
12(that)m
11 r 97 c
264 687 p (lar)s
(ge,)s
8(vocal,)m
10(and)m
9(not)m
9(particularly)m
9(for)m
(giving)s
8(Internet)m
9(community)m
9(will)m
9(take)m
9(great)m
9(delight)m
264 743 p (in)s
10(pointing)m
11(out)m
11(to)m
11(anyone)m
11(willing)m
11(to)m
11(listen)m
10(that)m
11(you)m
11(have)m
11(miscon\014gured)m
11(your)m
11(systems)m
264 800 p (and)s
11(are)m
12(not)m
11(interoperable.)m
t-bol.360 @sf 150 963 p (5.2)s
50(Choosing)m
12 r 97 c
13(maximum)m
12(transmission)m
13(unit)m
t-rom.330 @sf 150 1068 p (From)s
12(the)m
12(discussion)m
12(in)m
12(sec.)m
11(2,)m
12(it)m
12(seems)m
12(desirable)m
12(to)m
12(limit)m
12(the)m
12(maximum)m
12(packet)m
11(size)m
12 r 40 c
t-ita.330 @sf (MTU)s
t-rom.330 @sf 41 c
150 1125 p (on)s
17(any)m
16(line)m
17(where)m
16(there)m
17(might)m
16(be)m
17(interactive)m
16(traf)m
(\014c)s
16(and)m
17(multiple)m
16(active)m
17(connections)m
16(\(to)m
150 1181 p (maintain)s
16(good)m
15(interactive)m
16(response)m
16(between)m
15(the)m
16(dif)m
(ferent)s
15(connections)m
15(competing)m
16(for)m
16(the)m
150 1237 p (line\).)s
17(The)m
12(obvious)m
11(question)m
12(is)m
11(\\how)m
11(much)m
12(does)m
11(this)m
12(hurt)m
11(throughput?")m
17(It)m
12(doesn')m
(t.)s
221 1306 p (Figure)s
16 r 56 c
17(shows)m
17(how)m
17(user)m
17(data)m
17(throughput)m
t-rom.240 @sf 1015 1290 p (35)s
t-rom.330 @sf 1070 1306 p (scales)s
17(with)m
17(MTU)m
17(with)m
16(\(solid)m
17(line\))m
17(and)m
150 1363 p (without)s
12(\(dashed)m
12(line\))m
11(header)m
12(compression.)m
19(The)m
11(dotted)m
12(lines)m
12(show)m
12(what)m
12(MTU)m
11(corresponds)m
150 1419 p (to)s
11 r 97 c
11(200)m
11(ms)m
11(packet)m
11(time)m
11(at)m
11(2400,)m
11(9600)m
11(and)m
11(19,200)m
11(bps.)m
17(Note)m
11(that)m
11(with)m
11(header)m
11(compression)m
150 1476 p (even)s
11 r 97 c
12(2400)m
11(bps)m
12(line)m
11(can)m
12(be)m
11(responsive)m
12(yet)m
11(have)m
12(reasonable)m
11(throughput)m
11(\(83%\).)m
t-rom.240 @sf 1590 1459 p (36)s
t-rom.330 @sf 221 1544 p (Figure)s
15 r 57 c
16(shows)m
16(how)m
15(line)m
16(ef)m
(\014ciency)s
15(scales)m
15(with)m
16(increasing)m
16(line)m
15(speed,)m
17(assuming)m
16(that)m
150 1601 p 97 c
15(200ms.)m
15(MTU)m
15(is)m
15(always)m
15(chosen.)m
t-rom.240 @sf 781 1584 p (37)s
t-rom.330 @sf 847 1601 p (The)s
15(knee)m
15(in)m
15(the)m
15(performance)m
15(curve)m
16(is)m
15(around)m
15(2400)m
150 1657 p (bps.)s
23(Below)m
13(this,)m
14(ef)m
(\014ciency)s
12(is)m
14(sensitive)m
13(to)m
13(small)m
14(changes)m
13(in)m
13(speed)m
14(\(or)m
13(MTU)m
13(since)m
14(the)m
13(two)m
150 1714 p (are)s
14(linearly)m
15(related\))m
14(and)m
15(good)m
14(ef)m
(\014ciency)s
13(comes)m
15(at)m
14(the)m
15(expense)m
14(of)m
14(good)m
15(response.)m
26(Above)m
150 1770 p (2400bps)s
10(the)m
10(curve)m
10(is)m
9(\015at)m
10(and)m
10(ef)m
(\014ciency)s
9(is)m
10(relatively)m
10(independent)m
10(of)m
9(speed)m
10(or)m
10(MTU.)m
10(In)m
10(other)m
150 1826 p (words,)s
11(it)m
12(is)m
11(possible)m
12(to)m
11(have)m
12(both)m
11(good)m
12(response)m
11(and)m
12(high)m
11(line)m
11(ef)m
(\014ciency)s
-2 r 46 c
221 1895 p 84 c
-3 r 111 c
11(illustrate,)m
12(note)m
11(that)m
12(for)m
12 r 97 c
11(9600)m
12(bps)m
12(line)m
11(with)m
12(header)m
12(compression)m
11(there)m
12(is)m
12(essentially)m
150 1952 p (no)s
13(bene\014t)m
14(in)m
13(increasing)m
13(the)m
13(MTU)m
14(beyond)m
13(200)m
13(bytes:)m
21(If)m
13(the)m
14(MTU)m
13(is)m
13(increased)m
13(to)m
14(576,)m
13(the)m
150 2008 p (average)s
9(delay)m
9(increases)m
10(by)m
9(188%)m
9(while)m
9(throughput)m
9(only)m
10(improves)m
9(by)m
9(3%)m
9(\(from)m
9(96)m
10(to)m
9(99%\).)m
150 2070 p 660 2 ru
t-rom.180 @sf 187 2107 p (34)s
t-rom.270 @sf 217 2123 p (Allowing)s
13(only)m
13(one)m
13(slot)m
13(may)m
13(make)m
13(the)m
13(compressor)m
13(code)m
13(more)m
13(complex.)m
24(Implementations)m
13(should)m
13(avoid)m
150 2168 p (of)s
(fering)s
14(one)m
14(slot)m
14(if)m
15(possible)m
14(and)m
14(compressor)m
15(implementations)m
14(may)m
15(disable)m
14(compression)m
14(if)m
15(only)m
14(one)m
14(slot)m
15(is)m
150 2214 p (negotiated.)s
t-rom.180 @sf 187 2253 p (35)s
t-rom.270 @sf 217 2269 p (The)s
13(vertical)m
13(axis)m
12(is)m
13(in)m
12(percent)m
13(of)m
12(line)m
13(speed.)m
23(E.g.,)m
13(`95')m
13(means)m
12(that)m
13(95%)m
12(of)m
13(the)m
12(line)m
13(bandwidth)m
12(is)m
13(going)m
150 2315 p (to)s
t-ita.270 @sf 11(user)m
11(data)m
t-rom.270 @sf 12(or)m
-1 r 44 c
11(in)m
11(other)m
11(words,)m
12(the)m
11(user)m
11(would)m
12(see)m
11 r 97 c
11(data)m
11(transfer)m
12(rate)m
11(of)m
11(9120)m
11(bps)m
11(on)m
12 r 97 c
11(9600)m
11(bps)m
11(line.)m
20(Four)m
150 2360 p (bytes)s
9(of)m
9(link-level)m
9(\(framer\))m
9(encapsulation)m
9(in)m
8(addition)m
9(to)m
9(the)m
9(TCP/IP)m
9(or)m
9(compressed)m
9(header)m
9(were)m
9(included)m
9(when)m
150 2406 p (calculating)s
11(the)m
10(relative)m
11(throughput.)m
17(The)m
11(200)m
11(ms)m
10(packet)m
11(times)m
10(were)m
11(computed)m
11(assuming)m
10(an)m
11(asynchronous)m
10(line)m
150 2452 p (using)s
9(10)m
10(bits)m
9(per)m
9(character)m
10(\(8)m
9(data)m
10(bits,)m
9 r 49 c
9(start,)m
10 r 49 c
9(stop,)m
9(no)m
10(parity\).)m
t-rom.180 @sf 187 2491 p (36)s
t-rom.270 @sf 217 2507 p (However)s
44 c
8(the)m
10(40)m
9(byte)m
9(TCP)m
10(MSS)m
9(required)m
10(for)m
9 r 97 c
9(2400)m
10(bps)m
9(line)m
9(might)m
10(stress-test)m
9(your)m
10(TCP)m
9(implementation.)m
t-rom.180 @sf 187 2546 p (37)s
t-rom.270 @sf 217 2562 p (For)s
10 r 97 c
9(typical)m
10(async)m
9(line,)m
9 r 97 c
10(200ms.)m
9(MTU)m
9(is)m
10(simply)m
9(.02)m
cmsy9.300 @sf 3 r 2 c
t-rom.270 @sf 13(the)m
9(line)m
10(speed)m
9(in)m
9(bits)m
10(per)m
9(second.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(20])m
@eop
restore
%%Page: 21 23
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
21 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
150 241 p 26049576 18755689 1612863 7792112 37330754 33586588 startTexFig
%!PS-Adobe-1.0
%%%Title: S Psplot
%%%CreationDate: Wed Mar 29 03:35:56 1989
%%%Creator: van
%%BoundingBox: 24.5184 118.454 567.494 510.576
%%%DocumentFonts: Helvetica-Bold
0 setgray 1 setlinecap
0 108 translate .8 .8 scale
.12 .12 scale
4 setlinewidth
/ltypes [[] [] [5 15] [40] [30 20 10 20] [30] [50]] def
/setlinetype {
dup 6 ge {pop []} {ltypes exch get} ifelse
0 setdash } def
/l {lineto} bind def /m {moveto} bind def
/lm {lineto currentpoint stroke moveto} bind def
/hfnt /Helvetica-Bold findfont 100 scalefont def
/vfnt hfnt [0 1 -1 0 0 0] makefont def
/setfnt { dup /curfnt exch def setfont } bind def
hfnt setfnt
/t {show} bind def
/tc {dup stringwidth 2 div neg exch 2 div neg exch rmoveto show} bind def
/tr {dup stringwidth neg exch neg exch rmoveto show} bind def
/ts {dup 0 get 42 eq {dup 0 8#267 put} if tc} bind def
/txtrotate {
dup 0 eq
{pop hfnt}
{dup 90 eq
{pop vfnt}
{matrix identmatrix rotate hfnt exch makefont}
ifelse}
ifelse setfnt } bind def
/txtscale {curfnt exch scalefont setfont} bind def
12 setlinewidth
739 418 m
740 458 l
749 676 l
757 870 l
766 1043 l
775 1199 l
783 1340 l
792 1469 l
801 1586 l
809 1693 l
818 1792 l
827 1883 l
835 1968 l
844 2046 l
853 2119 l
861 2187 l
870 2251 l
878 2311 l
887 2367 l
896 2420 l
904 2470 l
913 2517 l
922 2561 l
930 2603 l
939 2643 l
948 2681 l
956 2718 l
965 2752 l
974 2785 l
982 2816 l
991 2846 l
1000 2875 l
1008 2902 l
1017 2929 l
1026 2954 l
1034 2978 l
1043 3001 l
1052 3024 l
1060 3045 l
1069 3066 l
1077 3086 l
1086 3105 l
1095 3124 l
1103 3141 l
1112 3159 l
1121 3176 l
1129 3192 l
1138 3207 l
1147 3223 l
1155 3237 l
1164 3252 l
1173 3265 l
1181 3279 l
1190 3292 l
1199 3304 l
1207 3317 l
1216 3329 l
1225 3340 l
1233 3352 l
1242 3363 l
1251 3373 l
1259 3384 l
1268 3394 l
1276 3404 l
1285 3413 l
1294 3423 l
1302 3432 l
1311 3441 l
1320 3449 l
1328 3458 l
1337 3466 l
1346 3474 l
1354 3482 l
1363 3490 l
1372 3498 l
1380 3505 l
1389 3512 l
1398 3519 l
1406 3526 l
1415 3533 l
1424 3540 l
1432 3546 l
1441 3553 l
1450 3559 l
1458 3565 l
1467 3571 l
1476 3577 l
1484 3582 l
1493 3588 l
1501 3594 l
1510 3599 l
1519 3604 l
1527 3610 l
1536 3615 l
1545 3620 l
1553 3625 l
1562 3630 l
1571 3634 l
1579 3639 l
1588 3644 l
1597 3648 l
1605 3653 l
1614 3657 l
1623 3661 l
1631 3666 l
1640 3670 l
1649 3674 l
1657 3678 l
1666 3682 l
1675 3686 l
1683 3689 l
1692 3693 l
1700 3697 l
1709 3701 l
1718 3704 l
1726 3708 l
1735 3711 l
1744 3715 l
1752 3718 l
1761 3721 l
1770 3725 l
1778 3728 l
1787 3731 l
1796 3734 l
1804 3737 l
1813 3740 l
1822 3743 l
1830 3746 l
1839 3749 l
1848 3752 l
1856 3755 lm
1865 3758 l
1874 3760 l
1882 3763 l
1891 3766 l
1899 3769 l
1908 3771 l
1917 3774 l
1925 3776 l
1934 3779 l
1943 3781 l
1951 3784 l
1960 3786 l
1969 3789 l
1977 3791 l
1986 3793 l
1995 3796 l
2003 3798 l
2012 3800 l
2021 3802 l
2029 3804 l
2038 3807 l
2047 3809 l
2055 3811 l
2064 3813 l
2073 3815 l
2081 3817 l
2090 3819 l
2099 3821 l
2107 3823 l
2116 3825 l
2124 3827 l
2133 3829 l
2142 3831 l
2150 3833 l
2159 3834 l
2168 3836 l
2176 3838 l
2185 3840 l
2194 3842 l
2202 3843 l
2211 3845 l
2220 3847 l
2228 3848 l
2237 3850 l
2246 3852 l
2254 3853 l
2263 3855 l
2272 3857 l
2280 3858 l
2289 3860 l
2298 3861 l
2306 3863 l
2315 3864 l
2323 3866 l
2332 3867 l
2341 3869 l
2349 3870 l
2358 3872 l
2367 3873 l
2375 3875 l
2384 3876 l
2393 3877 l
2401 3879 l
2410 3880 l
2419 3881 l
2427 3883 l
2436 3884 l
2445 3885 l
2453 3887 l
2462 3888 l
2471 3889 l
2479 3891 l
2488 3892 l
2497 3893 l
2505 3894 l
2514 3896 l
2522 3897 l
2531 3898 l
2540 3899 l
2548 3900 l
2557 3901 l
2566 3903 l
2574 3904 l
2583 3905 l
2592 3906 l
2600 3907 l
2609 3908 l
2618 3909 l
2626 3910 l
2635 3911 l
2644 3913 l
2652 3914 l
2661 3915 l
2670 3916 l
2678 3917 l
2687 3918 l
2696 3919 l
2704 3920 l
2713 3921 l
2721 3922 l
2730 3923 l
2739 3924 l
2747 3925 l
2756 3926 l
2765 3927 l
2773 3928 l
2782 3929 l
2791 3929 l
2799 3930 l
2808 3931 l
2817 3932 l
2825 3933 l
2834 3934 l
2843 3935 l
2851 3936 l
2860 3937 l
2869 3937 l
2877 3938 l
2886 3939 l
2895 3940 l
2903 3941 l
2912 3942 l
2921 3943 l
2929 3943 l
2938 3944 l
2946 3945 l
2955 3946 l
2964 3947 l
2972 3947 l
2981 3948 lm
2990 3949 l
2998 3950 l
3007 3951 l
3016 3951 l
3024 3952 l
3033 3953 l
3042 3954 l
3050 3954 l
3059 3955 l
3068 3956 l
3076 3956 l
3085 3957 l
3094 3958 l
3102 3959 l
3111 3959 l
3120 3960 l
3128 3961 l
3137 3961 l
3145 3962 l
3154 3963 l
3163 3963 l
3171 3964 l
3180 3965 l
3189 3965 l
3197 3966 l
3206 3967 l
3215 3967 l
3223 3968 l
3232 3969 l
3241 3969 l
3249 3970 l
3258 3971 l
3267 3971 l
3275 3972 l
3284 3973 l
3293 3973 l
3301 3974 l
3310 3974 l
3319 3975 l
3327 3976 l
3336 3976 l
3344 3977 l
3353 3977 l
3362 3978 l
3370 3979 l
3379 3979 l
3388 3980 l
3396 3980 l
3405 3981 l
3414 3981 l
3422 3982 l
3431 3982 l
3440 3983 l
3448 3984 l
3457 3984 l
3466 3985 l
3474 3985 l
3483 3986 l
3492 3986 l
3500 3987 l
3509 3987 l
3518 3988 l
3526 3988 l
3535 3989 l
3543 3989 l
3552 3990 l
3561 3990 l
3569 3991 l
3578 3991 l
3587 3992 l
3595 3992 l
3604 3993 l
3613 3993 l
3621 3994 l
3630 3994 l
3639 3995 l
3647 3995 l
3656 3996 l
3665 3996 l
3673 3997 l
3682 3997 l
3691 3998 l
3699 3998 l
3708 3999 l
3717 3999 l
3725 4000 l
3734 4000 l
3743 4000 l
3751 4001 l
3760 4001 l
3768 4002 l
3777 4002 l
3786 4003 l
3794 4003 l
3803 4004 l
3812 4004 l
3820 4004 l
3829 4005 l
3838 4005 l
3846 4006 l
3855 4006 l
3864 4007 l
3872 4007 l
3881 4007 l
3890 4008 l
3898 4008 l
3907 4009 l
3916 4009 l
3924 4009 l
3933 4010 l
3942 4010 l
3950 4011 l
3959 4011 l
3967 4011 l
3976 4012 l
3985 4012 l
3993 4013 l
4002 4013 l
4011 4013 l
4019 4014 l
4028 4014 l
4037 4014 l
4045 4015 l
4054 4015 l
4063 4016 l
4071 4016 l
4080 4016 l
4089 4017 l
4097 4017 l
4106 4017 lm
4115 4018 l
4123 4018 l
4132 4018 l
4141 4019 l
4149 4019 l
4158 4020 l
4166 4020 l
4175 4020 l
4184 4021 l
4192 4021 l
4201 4021 l
4210 4022 l
4218 4022 l
4227 4022 l
4236 4023 l
4244 4023 l
4253 4023 l
4262 4024 l
4270 4024 l
4279 4024 l
4288 4025 l
4296 4025 l
4305 4025 l
4314 4026 l
4322 4026 l
4331 4026 l
4340 4027 l
4348 4027 l
4357 4027 l
4365 4027 l
4374 4028 l
4383 4028 l
4391 4028 l
4400 4029 l
4409 4029 l
4417 4029 l
4426 4030 l
4435 4030 l
4443 4030 l
4452 4031 l
4461 4031 l
4469 4031 l
4478 4031 l
4487 4032 l
4495 4032 l
4504 4032 l
4513 4033 l
4521 4033 l
4530 4033 l
4539 4033 l
4547 4034 l
4556 4034 l
4565 4034 l
4573 4035 l
4582 4035 l
4590 4035 l
4599 4035 l
4608 4036 l
4616 4036 l
4625 4036 l
4634 4037 l
4642 4037 l
4651 4037 l
4660 4037 l
4668 4038 l
4677 4038 l
4686 4038 l
4694 4038 l
4703 4039 l
4712 4039 l
4720 4039 l
4729 4039 l
4738 4040 l
4746 4040 l
4755 4040 l
4764 4041 l
4772 4041 l
4781 4041 l
4789 4041 l
4798 4042 l
4807 4042 l
4815 4042 l
4824 4042 l
4833 4043 l
4841 4043 l
4850 4043 l
4859 4043 l
4867 4044 l
4876 4044 l
4885 4044 l
4893 4044 l
4902 4044 l
4911 4045 l
4919 4045 l
4928 4045 l
4937 4045 l
4945 4046 l
4954 4046 l
4963 4046 l
4971 4046 l
4980 4047 l
4988 4047 l
4997 4047 l
5006 4047 l
5014 4048 l
5023 4048 l
5032 4048 l
5040 4048 l
5049 4048 l
5058 4049 l
5066 4049 l
5075 4049 l
5084 4049 l
5092 4050 l
5101 4050 l
5110 4050 l
5118 4050 l
5127 4050 l
5136 4051 l
5144 4051 l
5153 4051 l
5162 4051 l
5170 4052 l
5179 4052 l
5188 4052 l
5196 4052 l
5205 4052 l
5213 4053 l
5222 4053 l
5231 4053 lm
5239 4053 l
5248 4053 l
5257 4054 l
5265 4054 l
5274 4054 l
5283 4054 l
5291 4054 l
5300 4055 l
5309 4055 l
5317 4055 l
5326 4055 l
5335 4055 l
5343 4056 l
5352 4056 l
5361 4056 l
5369 4056 l
5378 4056 l
5387 4057 l
5395 4057 l
5404 4057 l
5412 4057 l
5421 4057 l
5430 4058 l
5438 4058 l
5447 4058 l
5456 4058 l
5464 4058 l
5473 4058 l
5482 4059 l
5490 4059 l
5499 4059 l
5508 4059 l
5516 4059 l
5525 4060 l
5534 4060 l
5542 4060 l
5551 4060 l
5560 4060 l
5568 4061 l
5577 4061 l
5586 4061 l
5594 4061 l
5603 4061 l
5611 4061 l
5620 4062 l
5629 4062 l
5637 4062 l
5646 4062 l
5655 4062 l
5663 4062 l
5672 4063 l
5681 4063 l
5689 4063 l
5698 4063 l
5707 4063 l
5715 4063 l
5724 4064 l
5733 4064 l
5741 4064 l
5750 4064 l
5759 4064 l
5767 4064 l
5776 4065 l
5785 4065 l
5793 4065 l
5802 4065 l
5810 4065 l
5819 4065 l
5828 4066 l
stroke
4 setlinewidth
3232 131 m(MTU \(bytes\))tc
90 txtrotate 349 2291 m(Line efficiency \(%\))tc
636 418 m
636 493 l
stroke 1501 418 m
1501 493 l
stroke 2367 418 m
2367 493 l
stroke 3232 418 m
3232 493 l
stroke 4097 418 m
4097 493 l
stroke 4963 418 m
4963 493 l
stroke 5828 418 m
5828 493 l
stroke 636 418 m
5828 418 l
currentpoint stroke moveto
0 txtrotate 636 295 m(0)tc
1501 295 m(100)tc
2367 295 m(200)tc
3232 295 m(300)tc
4097 295 m(400)tc
4963 295 m(500)tc
5828 295 m(600)tc
636 458 m
711 458 l
stroke 636 1199 m
711 1199 l
stroke 636 1940 m
711 1940 l
stroke 636 2681 m
711 2681 l
stroke 636 3423 m
711 3423 l
stroke 636 4164 m
711 4164 l
stroke 636 458 m
636 4164 l
currentpoint stroke moveto
90 txtrotate 513 458 m(50)tc
513 1199 m(60)tc
513 1940 m(70)tc
513 2681 m(80)tc
513 3423 m(90)tc
513 4164 m(100)tc
636 4164 m
636 418 l
5828 418 l
5828 4164 l
636 4164 l
stroke
12 setlinewidth
3 setlinetype 1355 418 m
1363 458 l
1372 500 l
1380 540 l
1389 580 l
1398 619 l
1406 657 l
1415 694 l
1424 731 l
1432 767 l
1441 802 l
1450 836 l
1458 870 l
1467 903 l
1476 935 l
1484 967 l
1493 998 l
1501 1028 l
1510 1058 l
1519 1087 l
1527 1116 l
1536 1144 l
1545 1172 l
1553 1199 l
1562 1226 l
1571 1252 l
1579 1278 l
1588 1303 l
1597 1328 l
1605 1352 l
1614 1376 l
1623 1400 l
1631 1423 l
1640 1446 l
1649 1469 l
1657 1491 l
1666 1512 l
1675 1534 l
1683 1555 l
1692 1576 l
1700 1596 l
1709 1616 l
1718 1636 l
1726 1655 l
1735 1674 l
1744 1693 l
1752 1712 l
1761 1730 l
1770 1748 l
1778 1766 l
1787 1783 l
1796 1801 l
1804 1818 l
1813 1834 l
1822 1851 l
1830 1867 l
1839 1883 l
1848 1899 l
1856 1915 l
1865 1930 l
1874 1945 l
1882 1960 l
1891 1975 l
1899 1990 l
1908 2004 l
1917 2018 l
1925 2032 l
1934 2046 l
1943 2060 l
1951 2073 l
1960 2087 l
1969 2100 l
1977 2113 l
1986 2126 l
1995 2138 l
2003 2151 l
2012 2163 l
2021 2175 l
2029 2187 l
2038 2199 l
2047 2211 l
2055 2223 l
2064 2234 l
2073 2245 l
2081 2257 l
2090 2268 l
2099 2279 l
2107 2290 l
2116 2300 l
2124 2311 l
2133 2321 l
2142 2332 l
2150 2342 l
2159 2352 l
2168 2362 l
2176 2372 l
2185 2382 l
2194 2391 l
2202 2401 l
2211 2410 l
2220 2420 l
2228 2429 l
2237 2438 l
2246 2447 l
2254 2456 l
2263 2465 l
2272 2474 l
2280 2483 l
2289 2491 l
2298 2500 l
2306 2508 l
2315 2517 l
2323 2525 l
2332 2533 l
2341 2541 l
2349 2549 l
2358 2557 l
2367 2565 l
2375 2573 l
2384 2581 l
2393 2588 l
2401 2596 l
2410 2603 l
2419 2611 l
2427 2618 l
2436 2626 l
2445 2633 l
2453 2640 l
2462 2647 l
2471 2654 l
2479 2661 lm
2488 2668 l
2497 2675 l
2505 2681 l
2514 2688 l
2522 2695 l
2531 2701 l
2540 2708 l
2548 2714 l
2557 2721 l
2566 2727 l
2574 2733 l
2583 2740 l
2592 2746 l
2600 2752 l
2609 2758 l
2618 2764 l
2626 2770 l
2635 2776 l
2644 2782 l
2652 2788 l
2661 2794 l
2670 2799 l
2678 2805 l
2687 2811 l
2696 2816 l
2704 2822 l
2713 2827 l
2721 2833 l
2730 2838 l
2739 2843 l
2747 2849 l
2756 2854 l
2765 2859 l
2773 2865 l
2782 2870 l
2791 2875 l
2799 2880 l
2808 2885 l
2817 2890 l
2825 2895 l
2834 2900 l
2843 2905 l
2851 2910 l
2860 2914 l
2869 2919 l
2877 2924 l
2886 2929 l
2895 2933 l
2903 2938 l
2912 2942 l
2921 2947 l
2929 2951 l
2938 2956 l
2946 2960 l
2955 2965 l
2964 2969 l
2972 2974 l
2981 2978 l
2990 2982 l
2998 2986 l
3007 2991 l
3016 2995 l
3024 2999 l
3033 3003 l
3042 3007 l
3050 3011 l
3059 3016 l
3068 3020 l
3076 3024 l
3085 3028 l
3094 3031 l
3102 3035 l
3111 3039 l
3120 3043 l
3128 3047 l
3137 3051 l
3145 3055 l
3154 3058 l
3163 3062 l
3171 3066 l
3180 3069 l
3189 3073 l
3197 3077 l
3206 3080 l
3215 3084 l
3223 3088 l
3232 3091 l
3241 3095 l
3249 3098 l
3258 3102 l
3267 3105 l
3275 3108 l
3284 3112 l
3293 3115 l
3301 3119 l
3310 3122 l
3319 3125 l
3327 3129 l
3336 3132 l
3344 3135 l
3353 3138 l
3362 3141 l
3370 3145 l
3379 3148 l
3388 3151 l
3396 3154 l
3405 3157 l
3414 3160 l
3422 3163 l
3431 3167 l
3440 3170 l
3448 3173 l
3457 3176 l
3466 3179 l
3474 3182 l
3483 3184 l
3492 3187 l
3500 3190 l
3509 3193 l
3518 3196 l
3526 3199 l
3535 3202 l
3543 3205 l
3552 3207 l
3561 3210 l
3569 3213 l
3578 3216 l
3587 3219 l
3595 3221 l
3604 3224 lm
3613 3227 l
3621 3229 l
3630 3232 l
3639 3235 l
3647 3237 l
3656 3240 l
3665 3243 l
3673 3245 l
3682 3248 l
3691 3250 l
3699 3253 l
3708 3255 l
3717 3258 l
3725 3260 l
3734 3263 l
3743 3265 l
3751 3268 l
3760 3270 l
3768 3273 l
3777 3275 l
3786 3278 l
3794 3280 l
3803 3282 l
3812 3285 l
3820 3287 l
3829 3289 l
3838 3292 l
3846 3294 l
3855 3296 l
3864 3299 l
3872 3301 l
3881 3303 l
3890 3306 l
3898 3308 l
3907 3310 l
3916 3312 l
3924 3315 l
3933 3317 l
3942 3319 l
3950 3321 l
3959 3323 l
3967 3325 l
3976 3328 l
3985 3330 l
3993 3332 l
4002 3334 l
4011 3336 l
4019 3338 l
4028 3340 l
4037 3342 l
4045 3344 l
4054 3346 l
4063 3349 l
4071 3351 l
4080 3353 l
4089 3355 l
4097 3357 l
4106 3359 l
4115 3361 l
4123 3363 l
4132 3364 l
4141 3366 l
4149 3368 l
4158 3370 l
4166 3372 l
4175 3374 l
4184 3376 l
4192 3378 l
4201 3380 l
4210 3382 l
4218 3384 l
4227 3385 l
4236 3387 l
4244 3389 l
4253 3391 l
4262 3393 l
4270 3395 l
4279 3396 l
4288 3398 l
4296 3400 l
4305 3402 l
4314 3404 l
4322 3405 l
4331 3407 l
4340 3409 l
4348 3411 l
4357 3412 l
4365 3414 l
4374 3416 l
4383 3418 l
4391 3419 l
4400 3421 l
4409 3423 l
4417 3424 l
4426 3426 l
4435 3428 l
4443 3429 l
4452 3431 l
4461 3433 l
4469 3434 l
4478 3436 l
4487 3437 l
4495 3439 l
4504 3441 l
4513 3442 l
4521 3444 l
4530 3445 l
4539 3447 l
4547 3449 l
4556 3450 l
4565 3452 l
4573 3453 l
4582 3455 l
4590 3456 l
4599 3458 l
4608 3459 l
4616 3461 l
4625 3462 l
4634 3464 l
4642 3465 l
4651 3467 l
4660 3468 l
4668 3470 l
4677 3471 l
4686 3473 l
4694 3474 l
4703 3476 l
4712 3477 l
4720 3479 l
4729 3480 lm
4738 3482 l
4746 3483 l
4755 3484 l
4764 3486 l
4772 3487 l
4781 3489 l
4789 3490 l
4798 3491 l
4807 3493 l
4815 3494 l
4824 3496 l
4833 3497 l
4841 3498 l
4850 3500 l
4859 3501 l
4867 3502 l
4876 3504 l
4885 3505 l
4893 3506 l
4902 3508 l
4911 3509 l
4919 3510 l
4928 3512 l
4937 3513 l
4945 3514 l
4954 3515 l
4963 3517 l
4971 3518 l
4980 3519 l
4988 3521 l
4997 3522 l
5006 3523 l
5014 3524 l
5023 3526 l
5032 3527 l
5040 3528 l
5049 3529 l
5058 3531 l
5066 3532 l
5075 3533 l
5084 3534 l
5092 3535 l
5101 3537 l
5110 3538 l
5118 3539 l
5127 3540 l
5136 3541 l
5144 3543 l
5153 3544 l
5162 3545 l
5170 3546 l
5179 3547 l
5188 3548 l
5196 3550 l
5205 3551 l
5213 3552 l
5222 3553 l
5231 3554 l
5239 3555 l
5248 3557 l
5257 3558 l
5265 3559 l
5274 3560 l
5283 3561 l
5291 3562 l
5300 3563 l
5309 3564 l
5317 3565 l
5326 3567 l
5335 3568 l
5343 3569 l
5352 3570 l
5361 3571 l
5369 3572 l
5378 3573 l
5387 3574 l
5395 3575 l
5404 3576 l
5412 3577 l
5421 3578 l
5430 3579 l
5438 3580 l
5447 3581 l
5456 3582 l
5464 3584 l
5473 3585 l
5482 3586 l
5490 3587 l
5499 3588 l
5508 3589 l
5516 3590 l
5525 3591 l
5534 3592 l
5542 3593 l
5551 3594 l
5560 3595 l
5568 3596 l
5577 3597 l
5586 3598 l
5594 3599 l
5603 3600 l
5611 3601 l
5620 3602 l
5629 3603 l
5637 3603 l
5646 3604 l
5655 3605 l
5663 3606 l
5672 3607 l
5681 3608 l
5689 3609 l
5698 3610 l
5707 3611 l
5715 3612 l
5724 3613 l
5733 3614 l
5741 3615 l
5750 3616 l
5759 3617 l
5767 3618 l
5776 3618 l
5785 3619 l
5793 3620 l
5802 3621 l
5810 3622 l
5819 3623 l
5828 3624 l
stroke 5828 3624 m
5828 3624 l
stroke
4 setlinewidth
1 setlinetype 636 4164 m
636 4089 l
stroke 1501 4164 m
1501 4089 l
stroke 2367 4164 m
2367 4089 l
stroke 3232 4164 m
3232 4089 l
stroke 4097 4164 m
4097 4089 l
stroke 4963 4164 m
4963 4089 l
stroke 5828 4164 m
5828 4089 l
stroke 636 4164 m
5828 4164 l
stroke 5828 458 m
5753 458 l
stroke 5828 1199 m
5753 1199 l
stroke 5828 1940 m
5753 1940 l
stroke 5828 2681 m
5753 2681 l
stroke 5828 3423 m
5753 3423 l
stroke 5828 4164 m
5753 4164 l
stroke 5828 458 m
5828 4164 l
stroke
vfnt setfnt .8 txtscale
2 setlinetype
1017 458 m
1017 4164 l
stroke
990 828 m (2400 bps)tc
2263 458 m
2263 4164 l
stroke
2236 828 m (9600 bps)tc
3924 458 m
3924 4164 l
stroke
3897 828 m (19200 bps)tc
showpage
endTexFig
t-rom.330 @sf 580 1572 p (Figure)s
12(8:)m
h-med.330 @sf 17(Ef)m
(fective)s
12(Throughput)m
13(vs.)m
12(MTU)m
t-bol.360 @sf 150 1705 p (5.3)s
50(Interaction)m
12(with)m
13(data)m
12(compr)m
(ession)s
t-rom.330 @sf 150 1798 p (Since)s
11(the)m
11(early)m
10(1980')m
-1(s,)m
10(fast,)m
11(ef)m
(fective,)s
10(data)m
11(compression)m
11(algorithms)m
11(such)m
10(as)m
11(Lempel-Ziv[)m
55 c
93 c
150 1854 p (and)s
16(programs)m
17(that)m
16(embody)m
16(them,)m
18(such)m
16(as)m
16(the)m
t-ita.330 @sf 17(compr)m
-1(ess)m
t-rom.330 @sf 15(program)m
16(shipped)m
17(with)m
16(Berkeley)m
150 1911 p (Unix,)s
18(have)m
16(become)m
17(widely)m
17(available.)m
32(When)m
17(using)m
17(low)m
16(speed)m
17(or)m
16(long)m
17(haul)m
17(lines,)m
17(it)m
17(has)m
150 1967 p (become)s
12(common)m
11(practice)m
12(to)m
11(compress)m
12(data)m
12(before)m
11(sending)m
12(it.)m
18(For)m
11(dialup)m
12(connections,)m
11(this)m
150 2024 p (compression)s
10(is)m
11(often)m
10(done)m
11(in)m
10(the)m
11(modems,)m
11(independent)m
10(of)m
11(the)m
10(communicating)m
11(hosts.)m
17(Some)m
150 2080 p (interesting)s
13(issues)m
12(would)m
13(seem)m
13(to)m
12(be:)m
20(\(1\))m
12(Given)m
13 r 97 c
13(good)m
12(data)m
13(compressor)m
-1 r 44 c
12(is)m
13(there)m
12(any)m
13(need)m
150 2137 p (for)s
10(header)m
9(compression?)m
17(\(2\))m
10(Does)m
9(header)m
10(compression)m
10(interact)m
9(with)m
10(data)m
10(compression?)m
16(\(3\))m
150 2193 p (Should)s
11(data)m
12(be)m
11(compressed)m
12(before)m
11(or)m
12(after)m
11(header)m
12(compression?)m
t-rom.240 @sf 1324 2177 p (38)s
t-rom.330 @sf 221 2255 p 84 c
-3 r 111 c
9(investigate)m
9(\(1\),)m
9(Lempel-Ziv)m
10(compression)m
9(was)m
9(done)m
9(on)m
9 r 97 c
10(trace)m
9(of)m
9(446)m
9(TCP/IP)m
9(packets)m
150 2311 p (taken)s
18(from)m
18(the)m
18(user)m
2 r 39 c
-2 r 115 c
17(side)m
18(of)m
18 r 97 c
18(typical)m
18(telnet)m
18(conversation.)m
36(Since)m
18(the)m
18(packets)m
18(resulted)m
150 2368 p (from)s
17(typing,)m
18(almost)m
16(all)m
17(contained)m
17(only)m
16(one)m
17(data)m
17(byte)m
16(plus)m
17(40)m
17(bytes)m
16(of)m
17(header)m
-2 r 46 c
32(I.e.,)m
18(the)m
150 2424 p (test)s
11(essentially)m
11(measured)m
12(L-Z)m
11(compression)m
11(of)m
11(TCP/IP)m
11(headers.)m
17(The)m
11(compression)m
12(ratio)m
11(\(the)m
150 2464 p 660 2 ru
t-rom.180 @sf 187 2501 p (38)s
t-rom.270 @sf 217 2516 p (The)s
17(answers,)m
17(for)m
16(those)m
16(who)m
16(wish)m
16(to)m
16(skip)m
16(the)m
16(remainder)m
16(of)m
16(this)m
16(section,)m
18(are)m
16(`yes',)m
18(`no')m
16(and)m
16(`either)m
1(',)m
150 2562 p (respectively)s
-1 r 46 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(21])m
@eop
restore
%%Page: 22 24
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
22 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
150 241 p 26049576 18755689 1612863 7792112 37330754 33586588 startTexFig
%!PS-Adobe-1.0
%%%Title: S Psplot
%%%CreationDate: Tue Sep 5 06:04:26 1989
%%%Creator: van
%%BoundingBox: 24.5184 118.454 567.494 510.576
%%%DocumentFonts: Helvetica-Bold
0 setgray 1 setlinecap
0 108 translate .8 .8 scale
.12 .12 scale
4 setlinewidth
/ltypes [[] [] [5 15] [40] [30 20 10 20] [30] [50]] def
/setlinetype {
dup 6 ge {pop []} {ltypes exch get} ifelse
0 setdash } def
/l {lineto} bind def /m {moveto} bind def
/lm {lineto currentpoint stroke moveto} bind def
/hfnt /Helvetica-Bold findfont 100 scalefont def
/vfnt hfnt [0 1 -1 0 0 0] makefont def
/setfnt { dup /curfnt exch def setfont } bind def
hfnt setfnt
/t {show} bind def
/tc {dup stringwidth 2 div neg exch 2 div neg exch rmoveto show} bind def
/tr {dup stringwidth neg exch neg exch rmoveto show} bind def
/ts {dup 0 get 42 eq {dup 0 8#267 put} if tc} bind def
/txtrotate {
dup 0 eq
{pop hfnt}
{dup 90 eq
{pop vfnt}
{matrix identmatrix rotate hfnt exch makefont}
ifelse}
ifelse setfnt } bind def
/txtscale {curfnt exch scalefont setfont} bind def
12 setlinewidth
1418 1496 m
1727 2244 l
1959 2664 l
2145 2934 l
2300 3121 l
2433 3259 l
2549 3365 l
2653 3448 l
2746 3516 l
2831 3572 l
2909 3619 l
2981 3659 l
3048 3694 l
3110 3724 l
3168 3750 l
3223 3774 l
3275 3795 l
3325 3814 l
3371 3831 l
3416 3846 l
3459 3860 l
3499 3873 l
3538 3885 l
3576 3896 l
3612 3906 l
3646 3915 l
3680 3924 l
3712 3932 l
3743 3940 l
3774 3947 l
3803 3954 l
3831 3960 l
3859 3966 l
3886 3971 l
3912 3977 l
3937 3982 l
3962 3986 l
3986 3991 l
4009 3995 l
4032 3999 l
4054 4003 l
4076 4007 l
4097 4010 l
4118 4014 l
4138 4017 l
4158 4020 l
4178 4023 l
4197 4026 l
4216 4028 l
4234 4031 l
4252 4034 l
4270 4036 l
4287 4038 l
4304 4041 l
4321 4043 l
4337 4045 l
4354 4047 l
4370 4049 l
4385 4051 l
4401 4053 l
4416 4054 l
4431 4056 l
4445 4058 l
4460 4059 l
4474 4061 l
4488 4062 l
4502 4064 l
4515 4065 l
4529 4067 l
4542 4068 l
4555 4069 l
4568 4071 l
4580 4072 l
4593 4073 l
4605 4074 l
4617 4076 l
4629 4077 l
4641 4078 l
4653 4079 l
4665 4080 l
4676 4081 l
4687 4082 l
4698 4083 l
4709 4084 l
4720 4085 l
4731 4086 l
4742 4086 l
4752 4087 l
4763 4088 l
4773 4089 l
4783 4090 l
4793 4091 l
4803 4091 l
4813 4092 l
4823 4093 l
4833 4094 l
4842 4094 l
4852 4095 l
4861 4096 l
4870 4096 l
4880 4097 l
4889 4098 l
4898 4098 l
4907 4099 l
4915 4100 l
4924 4100 l
4933 4101 l
4942 4101 l
4950 4102 l
4959 4102 l
4967 4103 l
4975 4104 l
4983 4104 l
4992 4105 l
5000 4105 l
5008 4106 l
5016 4106 l
5024 4107 l
5031 4107 l
5039 4107 l
5047 4108 l
5054 4108 l
5062 4109 l
5069 4109 l
5077 4110 l
5084 4110 l
5092 4111 l
5099 4111 l
5106 4111 l
5113 4112 lm
5120 4112 l
5127 4113 l
5134 4113 l
5141 4113 l
5148 4114 l
5155 4114 l
5162 4114 l
5169 4115 l
5175 4115 l
5182 4115 l
5189 4116 l
5195 4116 l
5202 4116 l
5208 4117 l
5215 4117 l
5221 4117 l
5227 4118 l
5234 4118 l
5240 4118 l
5246 4119 l
5252 4119 l
5258 4119 l
5264 4120 l
5271 4120 l
5277 4120 l
5283 4120 l
5288 4121 l
5294 4121 l
5300 4121 l
5306 4121 l
5312 4122 l
5318 4122 l
5323 4122 l
5329 4122 l
5335 4123 l
5340 4123 l
5346 4123 l
5351 4123 l
5357 4124 l
5362 4124 l
5368 4124 l
5373 4124 l
5379 4125 l
5384 4125 l
5389 4125 l
5395 4125 l
5400 4125 l
5405 4126 l
5410 4126 l
5416 4126 l
5421 4126 l
5426 4126 l
5431 4127 l
5436 4127 l
5441 4127 l
5446 4127 l
5451 4127 l
5456 4128 l
5461 4128 l
5466 4128 l
5471 4128 l
5476 4128 l
5481 4129 l
5485 4129 l
5490 4129 l
5495 4129 l
5500 4129 l
5504 4129 l
5509 4130 l
currentpoint stroke moveto
4 setlinewidth
3232 131 m(Line speed \(bps\))tc
90 txtrotate 349 2291 m(Line efficiency with 200ms. MTU \(%\))tc
955 418 m
955 493 l
stroke 1606 418 m
1606 493 l
stroke 2256 418 m
2256 493 l
stroke 2907 418 m
2907 493 l
stroke 3557 418 m
3557 493 l
stroke 4208 418 m
4208 493 l
stroke 4858 418 m
4858 493 l
stroke 5509 418 m
5509 493 l
stroke 636 418 m
5828 418 l
currentpoint stroke moveto
0 txtrotate 955 295 m(300)tc
1606 295 m(600)tc
2256 295 m(1200)tc
2907 295 m(2400)tc
3557 295 m(4800)tc
4208 295 m(9600)tc
4858 295 m(19200)tc
5509 295 m(38400)tc
636 418 m
711 418 l
stroke 636 1167 m
711 1167 l
stroke 636 1916 m
711 1916 l
stroke 636 2666 m
711 2666 l
stroke 636 3415 m
711 3415 l
stroke 636 4164 m
711 4164 l
stroke 636 418 m
636 4164 l
currentpoint stroke moveto
90 txtrotate 513 418 m(0)tc
513 1167 m(20)tc
513 1916 m(40)tc
513 2666 m(60)tc
513 3415 m(80)tc
513 4164 m(100)tc
955 4164 m
955 4089 l
stroke 1606 4164 m
1606 4089 l
stroke 2256 4164 m
2256 4089 l
stroke 2907 4164 m
2907 4089 l
stroke 3557 4164 m
3557 4089 l
stroke 4208 4164 m
4208 4089 l
stroke 4858 4164 m
4858 4089 l
stroke 5509 4164 m
5509 4089 l
stroke 636 4164 m
5828 4164 l
stroke 5828 418 m
5753 418 l
stroke 5828 1167 m
5753 1167 l
stroke 5828 1916 m
5753 1916 l
stroke 5828 2666 m
5753 2666 l
stroke 5828 3415 m
5753 3415 l
stroke 5828 4164 m
5753 4164 l
stroke 5828 418 m
5828 4164 l
currentpoint stroke moveto
gsave showpage grestore newpath 0 0 moveto
endTexFig
t-rom.330 @sf 480 1572 p (Figure)s
11(9:)m
h-med.330 @sf 17(Small)m
13(MTU)m
13(line)m
13(ef)m
(\014ciency)s
12(vs.)m
12(line)m
13(speed)m
t-rom.330 @sf 150 1701 p (ratio)s
15(of)m
15(uncompressed)m
14(to)m
15(compressed)m
15(data\))m
15(was)m
14(2.6.)m
28(In)m
14(other)m
15(words,)m
16(the)m
15(average)m
14(header)m
150 1757 p (was)s
16(reduced)m
16(from)m
16(40)m
17(to)m
16(16)m
16(bytes.)m
31(While)m
16(this)m
16(is)m
16(good)m
16(compression,)m
18(it)m
16(is)m
16(far)m
16(from)m
16(the)m
16 r 53 c
150 1814 p (bytes)s
12(of)m
11(header)m
12(needed)m
12(for)m
11(good)m
12(interactive)m
12(response)m
11(and)m
12(far)m
11(from)m
12(the)m
12 r 51 c
11(bytes)m
12(of)m
12(header)m
11(\(a)m
150 1870 p (compression)s
11(ratio)m
12(of)m
11(13.3\))m
12(that)m
11(header)m
12(compression)m
11(yielded)m
12(on)m
11(the)m
12(same)m
11(packet)m
11(trace.)m
221 1931 p (The)s
10(second)m
11(and)m
11(third)m
11(questions)m
11(are)m
11(more)m
11(complex.)m
17 r 84 c
-3 r 111 c
10(investigate)m
11(them,)m
11(several)m
11(packet)m
150 1987 p (traces)s
13(from)m
13(FTP)m
13(\014le)m
13(transfers)m
14(were)m
13(analyzed)m
t-rom.240 @sf 975 1971 p (39)s
t-rom.330 @sf 1027 1987 p (with)s
13(and)m
13(without)m
13(header)m
13(compression)m
13(and)m
150 2044 p (with)s
14(and)m
14(without)m
15(L-Z)m
14(compression.)m
25(The)m
15(L-Z)m
14(compression)m
14(was)m
14(tried)m
14(at)m
15(two)m
14(places)m
14(in)m
14(the)m
150 2100 p (outgoing)s
9(data)m
9(stream)m
9(\(\014g.)m
9(10\):)m
16(\(1\))m
9(just)m
9(before)m
9(the)m
9(data)m
9(was)m
9(handed)m
9(to)m
9(TCP)m
9(for)m
9(encapsulation)m
150 2156 p (\(simulating)s
13(compression)m
12(done)m
13(at)m
12(the)m
13(`application')m
12(level\))m
13(and)m
13(\(2\))m
12(after)m
13(the)m
12(data)m
13(was)m
12(encap-)m
150 2213 p (sulated)s
10(\(simulating)m
11(compression)m
10(done)m
11(in)m
10(the)m
11(modem\).)m
17 r 84 c
-3(able)m
10 r 49 c
10(summarizes)m
11(the)m
10(results)m
11(for)m
10 r 97 c
150 2269 p (78,776)s
9(byte)m
8(ASCII)m
9(text)m
8(\014le)m
9(\(the)m
8(Unix)m
t-ita.330 @sf 9(csh.1)m
t-rom.330 @sf 9(manual)m
8(entry\))m
t-rom.240 @sf 1185 2253 p (40)s
t-rom.330 @sf 1232 2269 p (transferred)s
9(using)m
8(the)m
9(guidelines)m
150 2326 p (of)s
11(the)m
10(previous)m
11(section)m
11(\(256)m
11(byte)m
10(MTU)m
11(or)m
11(216)m
11(byte)m
10(MSS;)m
11(368)m
11(packets)m
11(total\).)m
17(Compression)m
150 2363 p 660 2 ru
t-rom.180 @sf 187 2400 p (39)s
t-rom.270 @sf 217 2416 p (The)s
15(data)m
14(volume)m
14(from)m
14(user)m
15(side)m
14(of)m
14 r 97 c
14(telnet)m
14(is)m
15(too)m
14(small)m
14(to)m
14(bene\014t)m
15(from)m
14(data)m
14(compression)m
14(and)m
14(can)m
15(be)m
150 2461 p (adversely)s
11(af)m
(fected)s
10(by)m
11(the)m
10(delay)m
11(most)m
11(compression)m
11(algorithms)m
10(\(necessarily\))m
11(add.)m
18(The)m
11(statistics)m
11(and)m
11(volume)m
11(of)m
150 2507 p (the)s
9(computer)m
10(side)m
9(of)m
9 r 97 c
10(telnet)m
9(are)m
10(similar)m
9(to)m
9(an)m
10(\(ASCII\))m
9(FTP)m
9(so)m
10(these)m
9(results)m
10(should)m
9(apply)m
9(to)m
10(either)m
-1 r 46 c
t-rom.180 @sf 187 2546 p (40)s
t-rom.270 @sf 217 2562 p (The)s
10(ten)m
10(experiments)m
9(described)m
10(were)m
10(each)m
9(done)m
10(on)m
10(ten)m
9(ASCII)m
10(\014les)m
10(\(four)m
9(long)m
10(e-mail)m
10(messages,)m
10(three)m
9(Unix)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(22])m
@eop
restore
%%Page: 23 25
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E0> 16 18 -3 -2 22.727] 15 @dc
[<0000000600000000060000000003000000000180000000018000000000C00000000070FFFFFFFF
F8FFFFFFFFFC000000007000000000C00000000180000000018000000003000000000600000000
0600> 40 16 -3 -3 45.454] 33 @dc
/Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.666629 TeXPSmakefont def
[<FFFFFFC0FFFFFFC0> 32 2 -4 -10 35.353] 0 @dc
1 /cmr10.329 @newfont
cmr10.329 @sf
[<000600000006000000060000000600000006000000060000000600000006000000060000000600
000006000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000> 32 32 -3 5 35.353] 43 @dc
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
23 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
300 241 p 21313290 2344461 460472 40784691 38548111 45126287 startTexFig
%!PS-Adobe-2.0
%%%Creator:Cricket Draw 1.1
%%%Title:data.compress2
%%%CreationDate: 12/26/89 5:25 AM
%%%DocumentFonts: Helvetica
%%BoundingBox: 7 620 586 686
%%%Pages:(atend)
%%%EndComments
0 780 translate .6 -.6 scale
/vmstate save def
/$cricket 210 dict def
$cricket begin
2 setlinecap
/d /def load def
/b {bind d}bind d
/l {load d}b
/e /exch l
/x {e d}b
/C /closepath l
/CP /currentpoint l
/SH /show l
/g /gsave l
/G /grestore l
/i /if l
/I /ifelse l
/v /getinterval l
/V /putinterval l
/W /stringwidth l
/SG /setgray l
/N /newpath l
/M /moveto l
/L /lineto l
/R /rlineto l
/T /translate l
/D /dup l
/* /mul l
/+ /add l
/- /sub l
/? /div l
/ma {* +}b
/h {D * e D ma sqrt}d
/np {} d
systemdict D /setpacking known D {/packstate currentpacking d D setpacking}i /pack? x
begin /settransfer load /setscreen load end
/setscreen x /settransfer x
systemdict /setcmykcolor known not { /setcmykcolor {pop pop pop pop 0 SG} d} if
/dt [ currenttransfer ] cvx d
/ds [ currentscreen D [ e ] cvx /devSpot x ] cvx d
/jp {e [ 3 1 roll aload pop counttomark -1 roll aload pop ] cvx}b
/settransfer {dt jp settransfer}b
/macvec dup where not { 256 array d
macvec 0 StandardEncoding
0 128 getinterval putinterval
macvec 16#27 /quotesingle put
macvec 16#60 /grave put
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
/registersans /copyrightsans /trademarksans /acute /dieresis /notequal /AE /Oslash
/infinity /plusminus /lessequal /greaterequal /yen /mu /partialdiff /summation
/product /pi /integral /ordfeminine /ordmasculine /Omega /ae /oslash
/questiondown /exclamdown /logicalnot /radical /florin /approxequal /Delta /guillemotleft
/guillemotright /ellipsis /space /Aacute /Atilde /Otilde /OE /oe
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /lozenge
/ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Agrave
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
/apple /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
macvec 128 128 v astore pop}{pop pop}I
/ad {+ d}b
/sd {- d}b
/td {* d}b
/dd {? d}b
/c {2 ? e 2 ? e}b
/n0 {D 0 eq {pop}}b
/m1 matrix d /m2 matrix d /m3 matrix d
/ct 0 d
/s+ 0 d
/po 0 d
/ts 40 string d
/s1 (|______) d
ts 0 s1 V
/sp ( ) d
/SM {/m3 m3 currentmatrix d}b
/RM {m3 setmatrix}b
/dpi 72 0 matrix defaultmatrix dtransform h d
/inch {72 *}b
/cm {28.3465 *}b
/pi 3.1415923 d
/fs 256 string d
/sh {m1 m2 copy 2 3 -1 roll sin put m2 concat}b
/fc {T n0 {rotate}I scale n0 {sh}I}b
/a {/ea x /sa x SM -1 * scale 0 0 1 sa ea 2 copy gt {arcn}{arc}I RM}b
/cn {SM T x1 y1 scale 0 0 1 ct 90 * D 90 + arc /ct ct 1 ad RM}b
/rr {/y1 x /x1 x /ct 0 d c y1 - /yr x x1 - /xr x N xr yr cn xr neg yr cn xr neg yr neg cn xr yr neg cn C}b
/dg
{/lc x clip rotate T /dy x /dx x
0 eq {N
1 eq {1 10 lc ? 10{log dy * 0 e neg M dx 0 R}for lc 10 gt{dy 0 e neg M dx 0 R}i}
{lc 1 eq {0 0 e neg M dx 0 R}{/st dy lc 1 - dd 0 1 lc 1 - {st * 0 e neg M dx 0 R}for}I}I
stroke}
{1 eq {/st 0 d /inc 10 lc 1 + dd dx dy lt {/rd dx d}{/rd dy d}I
1 1 lc {/di st 1 + log 10 log ? rd td N dx di - dy di - 0 360 a C stroke /st st inc ad}for}
{dx dy lt {/st dx lc dd}{/st dy lc dd}I lc {N dx dy 0 360 a C stroke /dx dx st sd /dy dy st sd}repeat} I
}I}b
/sb {/ea x /ia x /sa x /yr x /xr x ea sa lt{/ia ia neg d}i N sa ia ea{D /x1 e cos xr td /y1 e sin yr * neg d x1 y1 M 0 0 L}for}b
/bm {/y1 x /x1 x bitgray SG x1 y1 /md where {pop md /invertflag 2 copy known {get not}{pop pop true}I }{true}I
[x1 0 0 y1 0 0] {currentfile picstring readhexstring pop}imagemask}b
/c1 .166667 d /c2 .833333 d /c3 .5 d
/p3 {+ c3 *}b
/dc{/y2 x /x2 x x0 c1 * x1 c2 ma y0 c1 * y1 c2 ma x1 c2 * x2 c1 ma y1 c2 * y2 c1 ma x1 x2 p3 y1 y2 p3 curveto}b
/mp {/x0 x1 d /y0 y1 d /x1 x2 d /y1 y2 d}b
/SPOLY_INIT
{/SPOLY_SAVE save d /cls x
/M {2 copy /y0 x /x0 x moveto /M /moveto load d}d
/L {/y1 x /x1 x x0 x1 p3 y0 y1 p3
cls {/yy y1 d /xx x1 d /C {mp xx yy dc systemdict /closepath get exec}d M}
{lineto}I /L {{dc mp}stopped {/L {pop pop}d /noerr false d}i}d}d}d
/SPOLY_END {SPOLY_SAVE restore}b
/ah {g 2 copy T 3 -1 roll - 3 1 roll e - atan rotate os 0 M hl hw R 0 hw 2 * neg R C fill G}b
/da
{/bp x /ep x g stroke G
currentlinewidth dup .24 lt {pop .24}i
D -10 * D /hl x -2 ? /os x 2 * /hw x
flattenpath /out? false d
bp{g {/by x /bx x}
{2 copy by eq e bx eq and {pop pop}{/out? true d}I out? {exit}i}
/np load dup pathforall N bx by ah G}i
ep{/out? false d reversepath {/ey x /ex x}
{2 copy ey eq e ex eq and {pop pop}{/out? true d}I out? {exit}i}
/np load dup pathforall N ex ey ah}i}b
/tp {sm0 transform}b
/sfp {} d
/op {{tp moveto}{tp lineto}{3{tp 6 2 roll}repeat curveto}{C} pathforall sfp stroke}b
/sm0 matrix d /sm1 matrix d
/so
{SG /eg x /tg x /yt x /xt x
xt 0 ne yt 0 ne or {
xt abs yt abs gt {/tt xt abs d}{/tt yt abs d}I
tt 144 gt {/ct dpi 2 dd /sfp{g eofill G}d}
{tt 72 gt {/ct dpi 4 dd /sfp{g eofill G}d}
{/ct dpi 4 dd}I}I
/ig tg eg - ct ? neg d
/x1 xt ct ? neg d /y1 yt ct dd
1 0 0 1 xt yt sm0 astore pop
1 0 0 1 x1 y1 neg sm1 astore pop
g op G
1 1 ct{g ig * tg + SG sm0 D sm1 e concatmatrix pop op G}for}i}b
/css {T 0 0 M xsp 0 32 Txt widthshow}b
/sc
{g /xsp x /tg x /eg x /sg x /y1 x /x1 x /Txt x
/sst dpi 4 dd /y2 y1 sst dd /x2 x1 neg sst dd
eg sg eq {/sg sg .001 sd}i
/ig eg sg - sst ? neg d
g tg SG x1 y1 neg css
eg ig + ig sg {SG x2 y2 css}for G
x2 y2 css CP G T 0 0 M}b
/gbb {pathbbox /y1 x /x1 x /y2 x /x2 x /x3 x1 x2 sd /y3 y1 y2 sd}b
/radf
{/dn dpi 300 ? 8 * 24 ad /ig rg 255 ? dn dd
sg 255 ? SG eoclip gbb
x2 x3 2 ? + y2 y3 2 ? + T N
x3 y3 h 2 ? D dn ? neg 1
{0 0 3 -1 roll 0 360 arc C fill currentgray ig + SG}for}b
/dof
{/ff x
eoclip 180 - rotate gbb
x1 y1 T 180 rotate x3 y3 scale
0 1 255 {fs e D 255 ? ff rg * sg + round cvi put}for
1 256 8 [1 0 0 256 0 0] fs image}b
/gft {radf {{} dof}{{1 e - 9 * 1 + log 1 e -}dof}}b
/df
{g 2 copy eq {SG pop 0 ne {pop}i fill}{255 * e 255 * e 1 index - /rg x /sg x /gft load e get exec}I G}b
/oc
{/tl x /ju x /di 0 d
g flattenpath
{/y1 x /x1 x}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt di ad /x1 x2 d /y1 y2 d}
{}{/y2 x /x2 x /dx x2 x1 sd /dy y2 y1 sd /di dx D * dy D ma sqrt d}pathforall
ju 0 eq{/po 0 store}i
ju 1 eq{/po di tl - 2 ? store}i
ju 2 eq{/po di tl - store}i G}b
/pt {/FM true d /os x /sr x /os os sr 0 1 v W pop 2 ? ad /pd 0 d /sl os d /ct 0 d g flattenpath {mtp}{ltp}{ctp}{cpp}pathforall G}b
/mtp {/y1 x /x1 x /x2 x1 d /y2 y1 d /ovr FM {os /FM false d}{0}I d x1 y1 transform /cpy x /cpx x}b
/ltp
{/x3 x1 d /y3 y1 d /y1 x /x1 x /dx x1 x3 sd /dy y1 y3 sd /di dx D * dy D ma sqrt d
/di 0 ne
{/dsx dx di ? ovr td /dsy dy di ? ovr td x3 dsx + y3 dsy + transform
/cpy x /cpx x /pd pd di ad {sl pd le {ct sr length lt{sch}{exit}I}{/ovr sl pd sd exit}I}loop}i}b
/ctp {}b
/cpp {x2 y2 ltp x2 y2 mtp}b
/sch
{/ch sr ct 1 v d /ct ct 1 ad
/cw ch W pop 2 dd
g cpx cpy itransform T dy dx atan rotate cw neg 0 M ch SH
ct sr length lt{sr ct 1 v W pop 2 ? 0 rmoveto}i
CP transform /cpy x /cpx x G
/sl sl cw ad /po po cw 2 ma store ct sr length lt{/sl sl sr ct 1 v W pop 2 ? ad}i}b
/cpd {/newslots x D length newslots + dict D 3 1 roll begin {1 index /FID ne {def}i}forall pop pop end}b
/fn? {FontDirectory exch known} b
/mof
{/ui 0 d
/pw 1000 24 dd
/nn x
/bn x
ui 0 eq
{/ui bn findfont
dup /UniqueID known
{/UniqueID get 1 add}{pop 1}ifelse
def} if
/bfd bn findfont def
/ct bfd maxlength 1 ad
bfd /UniqueID known not
{/ct ct 1 ad} if
/ofd ct dict def
bfd
{ exch dup /FID ne
{exch ofd 3 1 roll put}
{pop pop} ifelse
}forall
ofd /FontName nn put
ofd /PaintType 2 put
ofd /StrokeWidth pw put
ofd /UniqueID ui put
nn ofd definefont pop}b
/muf
{20 dict begin
/ui x
e /BaseFont e findfont d
ui 0 eq
{/ui BaseFont D /UniqueID known
{/UniqueID get 1 +}{pop 1}I d}i
/FontType 3 d
/Upos BaseFont /FontInfo 2 copy known
{get /UnderlinePosition 2 copy known
{get}{pop pop -100 }I}{ pop pop -100 }I d
/Uwid BaseFont /FontInfo 2 copy known
{get /UnderlineThickness 2 copy known
{get}{pop pop 50}I}
{pop pop 50}I d
/FontMatrix BaseFont /FontMatrix get d
/FontBBox BaseFont /FontBBox get
D 1 get Upos gt {D 1 Upos put}i d
/Encoding BaseFont /Encoding get d
/theChar 1 string d
/BuildChar
{e begin
theChar 0 3 -1 roll put
BaseFont 1000 scalefont setfont
theChar W FontBBox setcachedevice
0 0 M
theChar show
0 Upos rmoveto 0 Upos L
Uwid setlinewidth stroke
end}d
currentdict
end
definefont pop}b
/of {dup fn? {pop pop}{mof}I}b
/uf {1 index fn? {pop pop pop}{muf}I}b
/ns {g CP m3 currentmatrix nulldevice setmatrix T 0 0 M Txt CP pop G}b
/ft {/ftsave save d CP 3 1 roll + e T 0 0 M /show /myshow l Txt ftsave restore}b
/ls {/Txt x 0 ft}b
/cs {/Txt x ns 2 ? neg ft}b
/rs {/Txt x ns neg ft}b
/slp {/sproc x /sr x 0 1 sr length 1 - {sr e 1 v sproc}for}b
/ss
{/Txt x /fsave save d
CP 2 copy T 0 0 M
/ffsave save d pop - /lw x ns /tw x /wsp lw tw sd /nsp 0 d
/show {nsp e {sp eq {1 +}i}slp /nsp x}d
Txt 0 nsp 0 gt {wsp nsp ? +}i ffsave restore /s+ x
/myshow load D systemdict /show get ne
{D D length 1 - get cvlit /charshadow eq {[ e aload pop e pop s+ e ] cvx}i}
{pop {s+ 0 32 4 -1 roll widthshow}}I
/show x Txt fsave restore}b
/cf{D /fn x length 7 + string /ts x ts 0 s1 V ts 7 fn V /fnm ts cvn d
FontDirectory fnm known not {fn cvn findfont 0 cpd /nfd x nfd D /FontName fnm put /Encoding macvec put fnm nfd definefont pop}i}b
pack? {packstate setpacking}i
%-----------------------------------
%Encode PS Fonts to match Mac Fonts
(Helvetica) cf
%-----------------------------------
%----- Begin Main Program -----%
mark
g 0 1 1 0 503.5 212 fc
newpath
-22.5 0 M
22.5 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 323.5 212 fc
newpath
-22.5 0 M
22.5 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 143.5 212 fc
newpath
-22.5 0 M
22.5 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 683.5 212 fc
newpath
-22.5 0 M
22.5 0 L
2 setlinewidth 0 SG true false da
G
g 0 1 1 0 237 212 fc
123.999 72 8.611 13.333 rr
g 1 SG fill G
2 setlinewidth 0 SG
0 setlinecap [3] 0 setdash
stroke
G
g 0 1 1 0 418 212 fc
126 72 8.75 13.333 rr
g 1 SG fill G
2 setlinewidth 0 SG stroke
G
g 0 1 1 0 598 212 fc
126 72 8.75 13.333 rr
g 1 SG fill G
2 setlinewidth 0 SG stroke
G
g 0 1 1 0 778 212 fc
126 72 8.75 13.333 rr
g 1 SG fill G
2 setlinewidth 0 SG
0 setlinecap [3] 0 setdash
stroke
G
g 0 1 -1 0 238.999 215 fc
/myshow /show load def
0 SG
0 12 M
/Helvetica findfont 18 scalefont setfont
{
(Data) show
}cs
0 -7 M
{
(Compression) show
}cs
0 -24 M
/Helvetica findfont 14 scalefont setfont
{
(\(1\)) show
}cs
G
g 0 1 -1 0 62.499 210.5 fc
/myshow /show load def
0 SG
0 -4 M
/Helvetica findfont 18 scalefont setfont
{
(Application) show
}cs
G
g 0 1 -1 0 418 212 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 18 scalefont setfont
{
(TCP/IP) show
}cs
0 -16 M
{
(Encapsulation) show
}cs
G
g 0 1 -1 0 597.999 212 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 18 scalefont setfont
{
(Header) show
}cs
0 -16 M
{
(Compression) show
}cs
G
g 0 1 -1 0 777.999 215 fc
/myshow /show load def
0 SG
0 12 M
/Helvetica findfont 18 scalefont setfont
{
(Data) show
}cs
0 -7 M
{
(Compression) show
}cs
0 -24 M
/Helvetica findfont 14 scalefont setfont
{
(\(2\)) show
}cs
G
g 0 1 -1 0 930.999 212 fc
/myshow /show load def
0 SG
0 3 M
/Helvetica findfont 18 scalefont setfont
{
(Serial) show
}cs
0 -16 M
{
(Line) show
}cs
G
g 0 1 1 0 67 211.999 fc
newpath
-54 -53.999 M
54 -53.999 L
54 53.999 L
-54 53.999 L
2 setlinewidth 0 SG stroke
G
g 0 1 1 0 863.5 212 fc
newpath
-22.5 0 M
22.5 0 L
2 setlinewidth 0 SG true false da
G
%------ End Main Program ------%
end
showpage pop
vmstate restore
%%%Trailer
%%%Pages:1
%%%EOF
endTexFig
t-rom.330 @sf 563 533 p (Figure)s
12(10:)m
h-med.330 @sf 17(Data)m
13(compression)m
12(alternatives)m
t-rom.330 @sf 150 665 p (ratios)s
11(for)m
12(the)m
11(following)m
12(ten)m
11(tests)m
12(are)m
11(shown)m
12(\(reading)m
11(left)m
12(to)m
11(right)m
11(and)m
12(top)m
11(to)m
12(bottom\):)m
cmsy10.329 @sf 215 760 p 15 c
t-rom.330 @sf 26(data)m
11(\014le)m
12(\(no)m
11(compression)m
12(or)m
11(encapsulation\))m
cmsy10.329 @sf 215 852 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
11(compressor)m
cmsy10.329 @sf 215 945 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
11(encapsulation)m
cmsy10.329 @sf 215 1037 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 215 1129 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
cmsy10.329 @sf 215 1222 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
cmsy10.329 @sf 215 1314 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(Hdr)m
-2 r 46 c
11(Compress.)m
cmsy10.329 @sf 215 1406 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(Hdr)m
-2 r 46 c
11(Compress.)m
cmsy10.329 @sf 215 1499 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(Hdr)m
-2 r 46 c
11(Compress.)m
cmsy10.329 @sf 33 r 33 c
t-rom.330 @sf 15(L{Z)m
cmsy10.329 @sf 215 1591 p 15 c
t-rom.330 @sf 26(data)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(L{Z)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(TCP/IP)m
cmsy10.329 @sf 27 r 33 c
t-rom.330 @sf 16(Hdr)m
-2 r 46 c
11(Compress.)m
cmsy10.329 @sf 33 r 33 c
t-rom.330 @sf 15(L{Z)m
442 1735 p 1067 2 ru
442 1745 p 1067 2 ru
441 1801 p 2 57 ru
324 r 2 57 ru
t-ita.300 @sf 807 1784 p (No)s
11(data)m
981 1801 p 2 57 ru
1036 1784 p (L{Z)s
1157 1801 p 2 57 ru
1212 1784 p (L{Z)s
1332 1801 p 2 57 ru
1387 1784 p (L{Z)s
1508 1801 p 2 57 ru
441 1857 p 2 57 ru
324 r 2 57 ru
791 1841 p (compr)s
-1(ess.)m
981 1857 p 2 57 ru
1007 1841 p (on)s
10(data)m
1157 1857 p 2 57 ru
1183 1841 p (on)s
10(wir)m
101 c
1332 1857 p 2 57 ru
1357 1841 p (on)s
11(both)m
1508 1857 p 2 57 ru
442 1859 p 1067 2 ru
441 1916 p 2 57 ru
t-rom.330 @sf 466 1899 p (Raw)s
12(Data)m
765 1916 p 2 57 ru
877 1899 p (1.00)s
981 1916 p 2 57 ru
1053 1899 p (2.44)s
1157 1916 p 2 57 ru
cmsy10.329 @sf 1223 1899 p 0 c
1332 1916 p 2 57 ru
1399 1899 p 0 c
1508 1916 p 2 57 ru
441 1972 p 2 57 ru
cmr10.329 @sf 470 1955 p 43 c
t-rom.330 @sf 14(TCP)m
12(Encap.)m
765 1972 p 2 57 ru
877 1955 p (0.83)s
981 1972 p 2 57 ru
1053 1955 p (2.03)s
1157 1972 p 2 57 ru
1227 1955 p (1.97)s
1332 1972 p 2 57 ru
1403 1955 p (1.58)s
1508 1972 p 2 57 ru
441 2028 p 2 57 ru
466 2012 p (w/Hdr)s
12(Comp.)m
765 2028 p 2 57 ru
877 2012 p (0.98)s
981 2028 p 2 57 ru
1053 2012 p (2.39)s
1157 2028 p 2 57 ru
1227 2012 p (2.26)s
1332 2028 p 2 57 ru
1403 2012 p (1.66)s
1508 2028 p 2 57 ru
442 2030 p 1067 2 ru
442 2040 p 1067 2 ru
554 2163 p 84 c
-2(able)m
10(1:)m
17(ASCII)m
12 r 84 c
-2(ext)m
10(File)m
12(Compression)m
11(Ratios)m
221 2268 p (The)s
12(\014rst)m
12(column)m
12(of)m
12(table)m
13 r 49 c
12(says)m
12(the)m
12(data)m
12(expands)m
13(by)m
12(19%)m
12(\(`compresses')m
12(by)m
12(.83\))m
13(when)m
150 2324 p (encapsulated)s
16(in)m
15(TCP/IP)m
16(and)m
15(by)m
16(2%)m
15(when)m
16(encapsulated)m
16(in)m
15(header)m
16(compressed)m
15(TCP/IP)m
-4 r 46 c
t-rom.240 @sf 1761 2308 p (41)s
150 2363 p 660 2 ru
t-rom.270 @sf 150 2416 p 67 c
11(source)m
10(\014les)m
11(and)m
11(three)m
11(Unix)m
10(manual)m
11(entries\).)m
18(The)m
11(results)m
11(were)m
10(remarkably)m
11(similar)m
11(for)m
10(dif)m
(ferent)s
10(\014les)m
11(and)m
11(the)m
150 2461 p (general)s
9(conclusions)m
10(reached)m
9(below)m
9(apply)m
10(to)m
9(all)m
10(ten)m
9(\014les.)m
t-rom.180 @sf 187 2501 p (41)s
t-rom.270 @sf 217 2516 p (This)s
8(is)m
8(what)m
8(would)m
8(be)m
8(expected)m
8(from)m
8(the)m
8(relative)m
8(header)m
8(sizes:)m
14(256/216)m
8(for)m
8(TCP/IP)m
8(and)m
8(219/216)m
8(for)m
8(header)m
150 2562 p (compression.)s
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(23])m
@eop
restore
%%Page: 24 26
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.666629 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<FFFFFFC0FFFFFFC0> 32 2 -4 -10 35.353] 0 @dc
1 /cmr10.329 @newfont
cmr10.329 @sf
[<000600000006000000060000000600000006000000060000000600000006000000060000000600
000006000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000> 32 32 -3 5 35.353] 43 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
24 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 150 233 p (The)s
11(\014rst)m
12(row)m
11(says)m
12(L{Z)m
11(compression)m
12(is)m
11(quite)m
12(ef)m
(fective)s
10(on)m
12(this)m
11(data,)m
11(shrinking)m
12(it)m
11(to)m
12(less)m
11(than)m
150 289 p (half)s
15(its)m
15(original)m
16(size.)m
28(Column)m
15(four)m
15(illustrates)m
15(the)m
16(well-known)m
15(fact)m
15(that)m
15(it)m
15(is)m
15 r 97 c
16(mistake)m
15(to)m
150 346 p (L{Z)s
15(compress)m
14(already)m
15(compressed)m
14(data.)m
27(The)m
15(interesting)m
14(information)m
15(is)m
15(in)m
14(rows)m
15(two)m
14(and)m
150 402 p (three)s
14(of)m
14(columns)m
14(two)m
14(and)m
14(three.)m
24(These)m
14(columns)m
14(say)m
14(that)m
14(the)m
14(bene\014t)m
13(of)m
14(data)m
14(compression)m
150 458 p (overwhelms)s
16(the)m
15(cost)m
16(of)m
15(encapsulation,)m
17(even)m
15(for)m
16(straight)m
16(TCP/IP)m
-4 r 46 c
14(They)m
16(also)m
15(say)m
16(that)m
15(it)m
16(is)m
150 515 p (slightly)s
13(better)m
13(to)m
12(compress)m
13(the)m
13(data)m
13(before)m
12(encapsulating)m
13(it)m
13(rather)m
13(than)m
12(compressing)m
13(at)m
13(the)m
150 571 p (framing/modem)s
11(level.)m
17(The)m
11(dif)m
(ferences)s
10(however)m
11(are)m
11(small)m
11 r 124 c
11(3%)m
11(and)m
11(6%,)m
11(respectively)m
-2 r 44 c
10(for)m
150 628 p (the)s
11(TCP/IP)m
12(and)m
11(header)m
12(compressed)m
11(encapsulations.)m
t-rom.240 @sf 1090 611 p (42)s
t-rom.330 @sf 221 690 p 84 c
-3(able)m
13 r 50 c
14(shows)m
14(the)m
13(same)m
14(experiment)m
14(for)m
14 r 97 c
14(122,880)m
13(byte)m
14(binary)m
14(\014le)m
14(\(the)m
13(Sun-3)m
t-ita.330 @sf 14(ps)m
t-rom.330 @sf 14(exe-)m
150 747 p (cutable\).)s
16(Although)m
7(the)m
8(raw)m
7(data)m
7(doesn')m
116 c
7(compress)m
7(nearly)m
8(as)m
7(well,)m
8(the)m
8(results)m
7(are)m
8(qualitatively)m
150 803 p (the)s
13(same)m
13(as)m
12(for)m
13(the)m
13(ASCII)m
13(data.)m
21(The)m
13(one)m
13(signi\014cant)m
12(change)m
13(is)m
13(in)m
13(row)m
13(two:)m
20(It)m
12(is)m
13(about)m
13(3%)m
150 859 p (better)s
12(to)m
12(compress)m
11(the)m
12(data)m
12(in)m
12(the)m
12(modem)m
11(rather)m
12(than)m
12(at)m
12(the)m
12(source)m
11(if)m
12(doing)m
12(TCP/IP)m
12(encap-)m
150 916 p (sulation)s
14(\(apparently)m
-2 r 44 c
14(Sun)m
14(binaries)m
14(and)m
14(TCP/IP)m
14(headers)m
14(have)m
14(similar)m
14(statistics\).)m
24(However)m
44 c
150 972 p (with)s
9(header)m
9(compression)m
10(\(row)m
9(three\))m
9(the)m
9(results)m
9(were)m
9(similar)m
10(to)m
9(the)m
9(ASCII)m
9(data)m
9 r 124 c
10(it')m
-2 r 115 c
8(about)m
150 1029 p (3%)s
11(worse)m
12(to)m
11(compress)m
12(at)m
11(the)m
12(modem)m
11(rather)m
12(than)m
11(the)m
12(source.)m
t-rom.240 @sf 1246 1012 p (43)s
442 1140 p 1067 2 ru
442 1150 p 1067 2 ru
441 1206 p 2 57 ru
324 r 2 57 ru
t-ita.300 @sf 807 1190 p (No)s
11(data)m
981 1206 p 2 57 ru
1040 1190 p (L-Z)s
1157 1206 p 2 57 ru
1215 1190 p (L-Z)s
1332 1206 p 2 57 ru
1390 1190 p (L-Z)s
1508 1206 p 2 57 ru
441 1263 p 2 57 ru
324 r 2 57 ru
791 1246 p (compr)s
-1(ess.)m
981 1263 p 2 57 ru
1007 1246 p (on)s
10(data)m
1157 1263 p 2 57 ru
1183 1246 p (on)s
10(wir)m
101 c
1332 1263 p 2 57 ru
1357 1246 p (on)s
11(both)m
1508 1263 p 2 57 ru
442 1265 p 1067 2 ru
441 1321 p 2 57 ru
t-rom.330 @sf 466 1304 p (Raw)s
12(Data)m
765 1321 p 2 57 ru
877 1304 p (1.00)s
981 1321 p 2 57 ru
1053 1304 p (1.72)s
1157 1321 p 2 57 ru
cmsy10.329 @sf 1223 1304 p 0 c
1332 1321 p 2 57 ru
1399 1304 p 0 c
1508 1321 p 2 57 ru
441 1377 p 2 57 ru
cmr10.329 @sf 470 1361 p 43 c
t-rom.330 @sf 14(TCP)m
12(Encap.)m
765 1377 p 2 57 ru
877 1361 p (0.83)s
981 1377 p 2 57 ru
1053 1361 p (1.43)s
1157 1377 p 2 57 ru
1227 1361 p (1.48)s
1332 1377 p 2 57 ru
1403 1361 p (1.21)s
1508 1377 p 2 57 ru
441 1434 p 2 57 ru
466 1417 p (w/Hdr)s
12(Comp.)m
765 1434 p 2 57 ru
877 1417 p (0.98)s
981 1434 p 2 57 ru
1053 1417 p (1.69)s
1157 1434 p 2 57 ru
1227 1417 p (1.64)s
1332 1434 p 2 57 ru
1403 1417 p (1.28)s
1508 1434 p 2 57 ru
442 1436 p 1067 2 ru
442 1446 p 1067 2 ru
598 1568 p 84 c
-3(able)m
11(2:)m
17(Binary)m
11(File)m
12(Compression)m
11(Ratios)m
150 2135 p 660 2 ru
t-rom.180 @sf 187 2171 p (42)s
t-rom.270 @sf 217 2187 p (The)s
12(dif)m
(ferences)s
11(are)m
12(due)m
11(to)m
12(the)m
12(wildly)m
11(dif)m
(ferent)s
11(byte)m
12(patterns)m
12(of)m
11(TCP/IP)m
12(datagrams)m
12(and)m
11(ASCII)m
12(text.)m
21(Any)m
150 2233 p (compression)s
14(scheme)m
14(with)m
14(an)m
15(underlying,)m
15(Markov)m
14(source)m
14(model,)m
16(such)m
14(as)m
14(Lempel-Ziv)m
-2 r 44 c
15(will)m
14(do)m
14(worse)m
14(when)m
150 2279 p (radically)s
10(dif)m
(ferent)s
10(sources)m
10(are)m
11(interleaved.)m
17(If)m
10(the)m
11(relative)m
10(proportions)m
10(of)m
11(the)m
10(two)m
10(sources)m
11(are)m
10(changed,)m
11(i.e.,)m
10(the)m
150 2324 p (MTU)s
13(is)m
13(increased,)m
14(the)m
13(performance)m
13(dif)m
(ference)s
13(between)m
13(the)m
13(two)m
13(compressor)m
13(locations)m
13(decreases.)m
26(However)m
-1 r 44 c
150 2370 p (the)s
11(rate)m
11(of)m
10(decrease)m
11(is)m
11(very)m
11(slow)m
11 r 124 c
10(increasing)m
11(the)m
11(MTU)m
11(by)m
11(400%)m
10(\(256)m
11(to)m
11(1024\))m
11(only)m
11(changed)m
10(the)m
11(dif)m
(ference)s
150 2416 p (between)s
9(the)m
10(data)m
9(and)m
9(modem)m
10(L{Z)m
9(choices)m
10(from)m
9(2.5%)m
9(to)m
10(1.3%.)m
t-rom.180 @sf 187 2455 p (43)s
t-rom.270 @sf 217 2471 p (There)s
12(are)m
11(other)m
12(good)m
11(reasons)m
12(to)m
11(compress)m
12(at)m
11(the)m
12(source:)m
18(Far)m
11(fewer)m
12(packets)m
11(have)m
12(to)m
11(be)m
12(encapsulated)m
11(and)m
150 2516 p (far)s
9(fewer)m
10(characters)m
9(have)m
9(to)m
9(be)m
10(sent)m
9(to)m
9(the)m
9(modem.)m
14(The)m
10(author)m
9(suspects)m
9(that)m
9(the)m
10(`compress)m
9(data)m
9(in)m
9(the)m
10(modem')m
150 2562 p (alternative)s
9(should)m
10(be)m
9(avoided)m
9(except)m
10(when)m
9(faced)m
10(with)m
9(an)m
9(intractable,)m
10(vendor)m
9(proprietary)m
9(operating)m
10(system.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(24])m
@eop
restore
%%Page: 25 27
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.666629 TeXPSmakefont def
1 /cmmi10.300 @newfont
cmmi10.300 @sf
[<600000E000007000007000007000007000003800003800003BE0E03E19901E07881C03881C0388
1C03880E01C00E01C00E01C00E01C00700E00700E00700E00700E0038070038070038070018030> 24 26 -1 8 25.012] 22 @dc
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Helvetica /h-med.330 ReEncodeForTeX /h-med.330 /h-med.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<C00000E00000E0000070000070000070000070000038000038000039F0783F08C41E05C41E03C2
1E01C21E01C20E00E10E00E00E00E00E00E0070070070070070070070070038038038038038038
03803801C01C018018> 24 29 -1 9 27.388] 22 @dc
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
25 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
583 243 p 784 2 ru
583 253 p 784 2 ru
582 309 p 2 57 ru
315 r 2 57 ru
t-ita.300 @sf 970 292 p 65 c
-1(verage)m
9(per)m
(-packet)s
1366 309 p 2 57 ru
582 365 p 2 57 ru
668 348 p (Machine)s
897 365 p 2 57 ru
935 348 p (pr)s
(ocessing)s
9(time)m
10 r 40 c
cmmi10.300 @sf 4 r 22 c
t-ita.300 @sf 3(sec.\))m
1366 365 p 2 57 ru
898 367 p 470 2 ru
582 422 p 2 57 ru
315 r 2 57 ru
923 405 p (Compr)s
-1(ess)m
1112 422 p 2 57 ru
1138 405 p (Decompr)s
-1(ess)m
1366 422 p 2 57 ru
583 424 p 784 2 ru
582 480 p 2 57 ru
t-rom.330 @sf 608 463 p (Sparcstation-1)s
897 480 p 2 57 ru
1042 463 p (24)s
1112 480 p 2 57 ru
1296 463 p (18)s
1366 480 p 2 57 ru
582 536 p 2 57 ru
647 520 p (Sun)s
11(4/260)m
897 536 p 2 57 ru
1042 520 p (46)s
1112 536 p 2 57 ru
1296 520 p (20)s
1366 536 p 2 57 ru
582 593 p 2 57 ru
658 576 p (Sun)s
12(3/60)m
897 593 p 2 57 ru
1042 576 p (90)s
1112 593 p 2 57 ru
1296 576 p (90)s
1366 593 p 2 57 ru
582 649 p 2 57 ru
658 632 p (Sun)s
12(3/50)m
897 649 p 2 57 ru
1019 632 p (130)s
1112 649 p 2 57 ru
1273 632 p (150)s
1366 649 p 2 57 ru
582 706 p 2 57 ru
625 689 p (HP9000/370)s
897 706 p 2 57 ru
1042 689 p (42)s
1112 706 p 2 57 ru
1296 689 p (33)s
1366 706 p 2 57 ru
582 762 p 2 57 ru
625 745 p (HP9000/360)s
897 762 p 2 57 ru
1042 745 p (68)s
1112 762 p 2 57 ru
1296 745 p (70)s
1366 762 p 2 57 ru
582 819 p 2 57 ru
643 802 p (DEC)s
11(3100)m
897 819 p 2 57 ru
1042 802 p (27)s
1112 819 p 2 57 ru
1296 802 p (25)s
1366 819 p 2 57 ru
582 875 p 2 57 ru
665 858 p 86 c
-4(ax)m
10(780)m
897 875 p 2 57 ru
1019 858 p (430)s
1112 875 p 2 57 ru
1273 858 p (300)s
1366 875 p 2 57 ru
582 932 p 2 57 ru
665 915 p 86 c
-4(ax)m
10(750)m
897 932 p 2 57 ru
1019 915 p (800)s
1112 932 p 2 57 ru
1273 915 p (500)s
1366 932 p 2 57 ru
582 988 p 2 57 ru
641 971 p (CCI)s
11 r 84 c
-2(ahoe)m
897 988 p 2 57 ru
1021 971 p 49 c
-1(10)m
1112 988 p 2 57 ru
1273 971 p (140)s
1366 988 p 2 57 ru
583 990 p 784 2 ru
583 1000 p 784 2 ru
622 1125 p 84 c
-2(able)m
11(3:)m
h-med.330 @sf 17(Compression)m
12(code)m
13(timings)m
t-bol.420 @sf 150 1302 p 54 c
58(Performance)m
15(measur)m
(ements)s
t-rom.330 @sf 150 1458 p (An)s
11(implementation)m
11(goal)m
10(of)m
11(compression)m
11(code)m
11(was)m
10(to)m
11(arrive)m
11(at)m
11(something)m
11(simple)m
10(enough)m
11(to)m
150 1515 p (run)s
9(at)m
10(ISDN)m
9(speeds)m
10(\(64Kbps\))m
9(on)m
10 r 97 c
9(typical)m
10(1989)m
9(workstation.)m
16(64Kbps)m
10(is)m
9 r 97 c
10(byte)m
9(every)m
10(122)m
cmmi10.329 @sf 3 r 22 c
t-rom.330 @sf 3 r 115 c
150 1571 p (so)s
11(120)m
cmmi10.329 @sf 4 r 22 c
t-rom.330 @sf 3 r 115 c
11(was)m
12(\(arbitrarily\))m
11(picked)m
12(as)m
11(the)m
11(tar)m
(get)s
11(compression/decompression)m
12(time.)m
t-rom.240 @sf 1634 1555 p (44)s
t-rom.330 @sf 221 1659 p (As)s
10(part)m
11(of)m
11(the)m
11(compression)m
10(code)m
11(development,)m
11 r 97 c
11(trace-driven)m
10(exerciser)m
11(was)m
11(developed.)m
150 1715 p (This)s
17(was)m
17(initially)m
17(used)m
16(to)m
17(compare)m
17(dif)m
(ferent)s
16(compression)m
17(protocol)m
17(choices)m
17(then)m
17(later)m
16(to)m
150 1772 p (test)s
11(the)m
12(code)m
11(on)m
11(dif)m
(ferent)s
11(computer)m
11(architectures)m
12(and)m
11(do)m
11(regression)m
12(tests)m
11(after)m
11(performance)m
150 1828 p (`improvements'.)s
16 r 65 c
8(small)m
7(modi\014cation)m
8(of)m
8(this)m
7(test)m
8(program)m
8(resulted)m
8(in)m
7 r 97 c
8(useful)m
8(measurement)m
150 1885 p (tool.)s
t-rom.240 @sf 236 1868 p (45)s
t-rom.330 @sf 312 1885 p 84 c
-2(able)m
17 r 51 c
19(shows)m
18(the)m
18(result)m
19(of)m
18(timing)m
18(the)m
19(compression)m
18(code)m
18(on)m
19(all)m
18(the)m
18(machines)m
150 1941 p (available)s
13(to)m
14(the)m
13(author)m
13(\(times)m
14(were)m
13(measured)m
13(using)m
14 r 97 c
13(mixed)m
13(telnet/ftp)m
13(traf)m
(\014c)s
13(trace\).)m
23 r 87 c
-1(ith)m
150 1998 p (the)s
15(exception)m
16(of)m
15(the)m
16 r 86 c
-5(ax)m
15(architectures,)m
16(which)m
16(suf)m
(fer)s
14(from)m
16(\(a\))m
15(having)m
15(bytes)m
16(in)m
15(the)m
15(wrong)m
150 2054 p (order)s
11(and)m
12(\(b\))m
11 r 97 c
12(lousy)m
11(compiler)m
12(\(Unix)m
11(pcc\),)m
12(all)m
11(machines)m
12(essentially)m
11(met)m
11(the)m
12(120)m
cmmi10.329 @sf 3 r 22 c
t-rom.330 @sf 3 r 115 c
12(goal.)m
150 2181 p 660 2 ru
t-rom.180 @sf 187 2217 p (44)s
t-rom.270 @sf 217 2233 p (The)s
12(time)m
11(choice)m
11(wasn')m
116 c
11(completely)m
11(arbitrary:)m
18(Decompression)m
11(is)m
12(often)m
11(done)m
11(during)m
11(the)m
12(inter)m
(-frame)s
10(`\015ag')m
150 2279 p (character)s
13(time)m
13(so,)m
14(on)m
13(systems)m
13(where)m
14(the)m
13(decompression)m
13(is)m
13(done)m
13(at)m
13(the)m
13(same)m
13(priority)m
13(level)m
13(as)m
14(the)m
13(serial)m
13(line)m
150 2324 p (input)s
14(interrupt,)m
14(times)m
14(much)m
14(longer)m
14(than)m
13 r 97 c
14(character)m
14(time)m
13(would)m
14(result)m
14(in)m
13(receiver)m
14(overruns.)m
27(And,)m
15(with)m
14(the)m
150 2370 p (current)s
10(average)m
11(of)m
10(\014ve)m
10(byte)m
10(frames)m
11(\(on)m
10(the)m
10(wire,)m
11(including)m
10(both)m
10(compressed)m
11(header)m
10(and)m
10(framing\),)m
11 r 97 c
10(compres-)m
150 2416 p (sion/decompression)s
13(that)m
13(takes)m
13(one)m
12(byte)m
13(time)m
13(can)m
13(use)m
13(at)m
13(most)m
12(20%)m
13(of)m
13(the)m
13(available)m
13(time.)m
24(This)m
13(seems)m
13(like)m
13 r 97 c
150 2461 p (comfortable)s
9(budget.)m
t-rom.180 @sf 187 2501 p (45)s
t-rom.270 @sf 217 2516 p (Both)s
10(the)m
10(test)m
10(program)m
10(and)m
9(timer)m
10(program)m
10(are)m
10(included)m
9(in)m
10(the)m
10(ftp-able)m
10(package)m
10(described)m
9(in)m
10(appendix)m
10 r 65 c
10(as)m
150 2562 p (\014les)s
t-ita.270 @sf 9(tester)m
-3(.c)m
t-rom.270 @sf 9(and)m
t-ita.270 @sf 9(timer)m
-3(.c)m
t-rom.270 @sf 46 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(25])m
@eop
restore
%%Page: 26 28
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.666629 TeXPSmakefont def
26 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.420 @sf 150 233 p 55 c
58(Acknowlegements)m
t-rom.330 @sf 150 342 p (The)s
13(author)m
13(is)m
14(grateful)m
13(to)m
13(the)m
13(members)m
14(of)m
13(the)m
13(Internet)m
13(Engineering)m
13 r 84 c
-2(ask)m
13(Force,)m
13(chaired)m
13(by)m
150 398 p (Phill)s
16(Gross,)m
17(who)m
17(provided)m
16(encouragement)m
16(and)m
16(thoughtful)m
16(review)m
16(of)m
16(this)m
17(work.)m
31(Several)m
150 455 p (patient)s
19(beta-testers,)m
21(particularly)m
19(Sam)m
19(Lef)m
(\015er)s
18(and)m
19(Craig)m
19(Leres,)m
21(tracked)m
19(down)m
19(and)m
19(\014xed)m
150 511 p (problems)s
13(in)m
13(the)m
13(initial)m
13(implementation.)m
22(Cynthia)m
13(Livingston)m
13(and)m
13(Craig)m
13(Partridge)m
13(carefully)m
150 568 p (read)s
13(and)m
14(greatly)m
13(improved)m
14(an)m
13(unending)m
14(sequence)m
13(of)m
14(partial)m
13(drafts)m
14(of)m
13(this)m
14(document.)m
23(And)m
150 624 p (last)s
14(but)m
14(not)m
14(least,)m
14 r 84 c
-2(elebit)m
13(modem)m
14(corporation,)m
14(particularly)m
14(Mike)m
14(Ballard,)m
15(encouraged)m
14(this)m
150 681 p (work)s
11(from)m
12(its)m
11(inception)m
12(and)m
11(has)m
12(been)m
11(an)m
12(ongoing)m
11(champion)m
12(of)m
11(serial)m
11(line)m
12(and)m
11(dial-up)m
12(IP)m
-4 r 46 c
t-bol.420 @sf 150 826 p (Refer)s
(ences)s
t-rom.300 @sf 171 924 p ([1])s
t-romsc.300 @sf 23(Bingham,)m
10(J.)m
10(A.)m
11(C.)m
t-ita.300 @sf 15(Theory)m
10(and)m
11(Practice)m
10(of)m
10(Modem)m
11(Design)m
t-rom.300 @sf 46 c
15(John)m
10 r 87 c
(iley)s
9 r 38 c
10(Sons,)m
11(1988.)m
171 999 p ([2])s
t-romsc.300 @sf 23(Carey,)m
10(M.)m
10(B.,)m
10(Chan,)m
10(H.-T)m
-2(.,)m
9(Descloux,)m
11(A.,)m
10(Ingle,)m
10(J.)m
10 r 70 c
-2(.,)m
9(and)m
10(Park,)m
10(K.)m
10(I.)m
t-rom.300 @sf 15(1982/83)m
10(end)m
11(of)m
(\014ce)s
242 1048 p (connection)s
7(study:)m
14(Analog)m
8(voice)m
7(and)m
7(voiceband)m
7(data)m
8(transmission)m
7(performance)m
7(characterization)m
242 1098 p (of)s
11(the)m
10(public)m
10(switched)m
11(network.)m
t-ita.300 @sf 15(Bell)m
10(System)m
11 r 84 c
-3(echnical)m
9(Journal)m
11(63)m
t-rom.300 @sf 44 c
10 r 57 c
10(\(Nov)m
-1 r 46 c
9(1984\).)m
171 1172 p ([3])s
t-romsc.300 @sf 23(Chiappa,)m
10(N.)m
t-rom.300 @sf 44 c
10(1988.)m
15(Private)m
11(communication.)m
171 1247 p ([4])s
t-romsc.300 @sf 23(Clark,)m
14(D.)m
13(D.)m
t-rom.300 @sf 24(The)m
14(design)m
13(philosophy)m
14(of)m
13(the)m
14(DARP)m
-3 r 65 c
12(Internet)m
14(protocols.)m
24(In)m
t-ita.300 @sf 13(Pr)m
(oceedings)s
12(of)m
242 1296 p (SIGCOMM)s
11('88)m
t-rom.300 @sf 10(\(Stanford,)m
10(CA,)m
11(Aug.)m
10(1988\),)m
11(ACM.)m
171 1371 p ([5])s
t-romsc.300 @sf 23(Farber,)m
11(D.)m
11(J.,)m
12(Delp,)m
11(G.)m
11(S.,)m
12(and)m
11(Conte,)m
11 r 84 c
-2 r 46 c
11(M.)m
t-ita.300 @sf 17 r 65 c
11(Thinwir)m
101 c
10(Pr)m
-1(otocol)m
11(for)m
11(connecting)m
11(personal)m
242 1420 p (computers)s
12(to)m
12(the)m
12(Internet)m
t-rom.300 @sf 46 c
19 r 65 c
t-romsc.300 @sf (rpanet)s
t-rom.300 @sf 12 r 87 c
-3(orking)m
11(Group)m
12(Requests)m
12(for)m
12(Comment,)m
12(DDN)m
12(Network)m
242 1470 p (Information)s
11(Center)m
-1 r 44 c
9(SRI)m
11(International,)m
10(Menlo)m
11(Park,)m
10(CA,)m
10(Sept.)m
11(1984.)m
15(RFC-914.)m
171 1544 p ([6])s
t-romsc.300 @sf 23(Kent,)m
7(C.)m
6(A.,)m
7(and)m
6(Mogul,)m
7(J.)m
t-rom.300 @sf 14(Fragmentation)m
6(considered)m
7(harmful.)m
13(In)m
t-ita.300 @sf 7(Pr)m
-1(oceedings)m
5(of)m
7(SIGCOMM)m
242 1594 p ('87)s
t-rom.300 @sf 11(\(Aug.)m
10(1987\),)m
11(ACM.)m
171 1669 p ([7])s
t-romsc.300 @sf 23(Lempel,)m
15(A.,)m
16(and)m
14(Ziv,)m
15(J.)m
t-rom.300 @sf 28(Compression)m
14(of)m
14(individual)m
15(sequences)m
14(via)m
15(variable-rate)m
14(encoding.)m
t-ita.300 @sf 242 1718 p (IEEE)s
11 r 84 c
-2(ransactions)m
10(on)m
10(Information)m
11(Theory)m
10(IT)m
-2(-24)m
t-rom.300 @sf 44 c
9 r 53 c
11(\(June)m
10(1978\).)m
171 1793 p ([8])s
t-romsc.300 @sf 23(Nagle,)m
11(J.)m
t-ita.300 @sf 16(Congestion)m
11(Contr)m
(ol)s
10(in)m
11(IP/TCP)m
10(Internetworks)m
t-rom.300 @sf 46 c
17 r 65 c
t-romsc.300 @sf (rpanet)s
t-rom.300 @sf 11 r 87 c
-2(orking)m
10(Group)m
11(Requests)m
242 1842 p (for)s
14(Comment,)m
16(DDN)m
14(Network)m
14(Information)m
15(Center)m
-1 r 44 c
14(SRI)m
15(International,)m
15(Menlo)m
14(Park,)m
16(CA,)m
14(Jan.)m
242 1892 p (1984.)s
15(RFC-896.)m
171 1966 p ([9])s
t-romsc.300 @sf 23(Perkins,)m
7(D.)m
t-ita.300 @sf 14(Point-to-Point)m
6(Pr)m
(otocol:)s
12 r 65 c
7(pr)m
(oposal)s
5(for)m
7(multi-pr)m
-1(otocol)m
6(transmission)m
6(of)m
7(datagrams)m
242 2016 p (over)s
13(point-to-point)m
13(links)m
t-rom.300 @sf 46 c
24 r 65 c
t-romsc.300 @sf (rpanet)s
t-rom.300 @sf 13 r 87 c
-3(orking)m
13(Group)m
13(Requests)m
13(for)m
13(Comment,)m
14(DDN)m
13(Network)m
242 2066 p (Information)s
11(Center)m
-1 r 44 c
9(SRI)m
11(International,)m
10(Menlo)m
11(Park,)m
10(CA,)m
10(Nov)m
-1 r 46 c
9(1989.)m
15(RFC-1)m
(134.)s
150 2140 p ([10])s
t-romsc.300 @sf 23(Postel,)m
15(J.)m
t-rom.300 @sf 44 c
16(Ed.)m
t-ita.300 @sf 27(Internet)m
14(Pr)m
(otocol)s
13(Speci\014cation)m
t-rom.300 @sf 46 c
27(SRI)m
15(International,)m
15(Menlo)m
15(Park,)m
15(CA,)m
15(Sept.)m
242 2190 p (1981.)s
15(RFC-791.)m
152 2264 p ([1)s
-1(1])m
t-romsc.300 @sf 22(Postel,)m
11(J.)m
t-rom.300 @sf 44 c
11(Ed.)m
t-ita.300 @sf 17 r 84 c
-1(ransmission)m
10(Contr)m
-1(ol)m
10(Pr)m
(otocol)s
10(Speci\014cation)m
t-rom.300 @sf 46 c
17(SRI)m
11(International,)m
11(Menlo)m
11(Park,)m
242 2314 p (CA,)s
11(Sept.)m
10(1981.)m
15(RFC-793.)m
150 2388 p ([12])s
t-romsc.300 @sf 23(Romkey,)m
19(J.)m
t-ita.300 @sf 34 r 65 c
18(Nonstandar)m
-1 r 100 c
16(for)m
17 r 84 c
-1(ransmission)m
16(of)m
17(IP)m
17(Datagrams)m
17(Over)m
18(Serial)m
17(Lines:)m
29(Slip)m
t-rom.300 @sf 46 c
242 2438 p 65 c
t-romsc.300 @sf (rpanet)s
t-rom.300 @sf 15 r 87 c
-2(orking)m
14(Group)m
15(Requests)m
15(for)m
15(Comment,)m
17(DDN)m
15(Network)m
15(Information)m
15(Center)m
-1 r 44 c
15(SRI)m
242 2488 p (International,)s
11(Menlo)m
10(Park,)m
10(CA,)m
11(June)m
10(1988.)m
15(RFC-1055.)m
150 2562 p ([13])s
t-romsc.300 @sf 23(Salthouse,)m
10 r 84 c
-2 r 46 c
9(A.)m
t-rom.300 @sf 15(The)m
11(skill)m
10(of)m
11(typing.)m
t-ita.300 @sf 15(Scienti\014c)m
10(American)m
11(250)m
t-rom.300 @sf 44 c
10 r 50 c
10(\(Feb.)m
11(1984\),)m
10(128{135.)m
150 2724 p (Jacobson)s
1336([Page)m
11(26])m
@eop
restore
%%Page: 27 29
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Italic /t-ita.300 ReEncodeForTeX /t-ita.300 /t-ita.300 41.666629 TeXPSmakefont def
27 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
150 233 p ([14])s
t-romsc.300 @sf 23(Saltzer,)m
8(J.)m
9(H.,)m
8(Reed,)m
9(D.)m
8 r 80 c
-3(.,)m
7(and)m
9(Clark,)m
8(D.)m
9(D.)m
t-rom.300 @sf 14(End-to-end)m
8(ar)m
(guments)s
8(in)m
8(system)m
8(design.)m
t-ita.300 @sf 15(ACM)m
242 282 p 84 c
-1(ransactions)m
9(on)m
11(Computer)m
10(Systems)m
11 r 50 c
t-rom.300 @sf 44 c
10 r 52 c
10(\(Nov)m
-1 r 46 c
9(1984\).)m
150 357 p ([15])s
t-romsc.300 @sf 23(Shneiderman,)m
10(B.)m
t-ita.300 @sf 15(Designing)m
11(the)m
10(User)m
10(Interface)m
t-rom.300 @sf 46 c
15(Addison-W)m
-2(esley)m
-3 r 44 c
10(1987.)m
150 2724 p (Jacobson)s
1336([Page)m
11(27])m
@eop
restore
%%Page: 28 30
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
28 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.420 @sf 150 233 p 65 c
58(Sample)m
15(Implementation)m
t-rom.330 @sf 150 342 p (The)s
11(following)m
12(is)m
11 r 97 c
12(sample)m
11(implementation)m
12(of)m
11(the)m
12(protocol)m
11(described)m
12(in)m
11(this)m
11(document.)m
221 404 p (Since)s
7(many)m
7(people)m
8(who)m
7(might)m
7(have)m
8(the)m
7(deal)m
7(with)m
8(this)m
7(code)m
8(are)m
7(familiar)m
7(with)m
8(the)m
7(Berkeley)m
150 461 p (Unix)s
14(kernel)m
14(and)m
14(its)m
13(coding)m
14(style)m
14(\(af)m
(fectionately)s
13(known)m
14(as)m
t-ita.330 @sf 14(kernel)m
14(normal)m
13(form)m
t-rom.330 @sf (\),)s
15(this)m
14(code)m
150 517 p (was)s
13(done)m
14(in)m
13(that)m
14(style.)m
22(It)m
14(uses)m
13(the)m
14(Berkeley)m
13(\\subroutines")m
13(\(actually)m
-2 r 44 c
13(macros)m
14(and/or)m
13(inline)m
150 574 p (assembler)s
12(expansions\))m
13(for)m
12(converting)m
13(to/from)m
12(network)m
13(byte)m
12(order)m
13(and)m
12(copying/comparing)m
150 630 p (strings)s
14(of)m
14(bytes.)m
26(These)m
14(routines)m
14(are)m
15(brie\015y)m
14(described)m
14(in)m
14(sec.)m
14(A.5)m
15(for)m
14(anyone)m
14(not)m
14(familiar)m
150 687 p (with)s
11(them.)m
221 749 p (This)s
14(code)m
14(has)m
14(been)m
14(run)m
14(on)m
15(all)m
14(the)m
14(machines)m
14(listed)m
14(in)m
15(the)m
14(table)m
14(on)m
14(page)m
14(25.)m
26(Thus,)m
15(the)m
150 806 p (author)s
12(hopes)m
12(there)m
11(are)m
12(no)m
12(byte)m
12(order)m
11(or)m
12(alignment)m
12(problems)m
12(\(although)m
12(there)m
11(are)m
12(embedded)m
150 862 p (assumptions)s
10(about)m
10(alignment)m
11(that)m
10(are)m
10(valid)m
10(for)m
10(Berkeley)m
11(Unix)m
10(but)m
10(may)m
10(not)m
10(be)m
11(true)m
10(for)m
10(other)m
150 918 p (IP)s
14(implementations)m
15 r 124 c
14(see)m
15(the)m
14(comments)m
15(mentioning)m
14(alignment)m
15(in)m
t-ita.330 @sf 14(sl)m
1437 925 p 23 2 ru
1463 918 p (compr)s
-1(ess)m
1637 925 p 23 2 ru
1663 918 p (tcp)s
t-rom.330 @sf 15(and)m
t-ita.330 @sf 150 975 p (sl)s
184 982 p 23 2 ru
210 975 p (decompr)s
-1(ess)m
427 982 p 23 2 ru
454 975 p (tcp)s
t-rom.330 @sf (\).)s
221 1037 p (There)s
8(was)m
9(some)m
8(attempt)m
9(to)m
8(make)m
9(this)m
8(code)m
9(ef)m
(\014cient.)s
15(Unfortunately)m
-2 r 44 c
9(that)m
8(may)m
9(have)m
8(made)m
150 1094 p (portions)s
12(of)m
12(it)m
12(incomprehensible.)m
19(The)m
13(author)m
12(apologizes)m
12(for)m
12(any)m
12(frustration)m
12(this)m
12(engenders.)m
150 1150 p (\(In)s
15(honesty)m
-2 r 44 c
16(my)m
15 r 67 c
16(style)m
15(is)m
15(known)m
16(to)m
15(be)m
16(obscure)m
15(and)m
15(claims)m
16(of)m
15(\\ef)m
(\014ciency")s
15(are)m
15(simply)m
15 r 97 c
150 1207 p (convenient)s
11(excuse.\))m
221 1269 p (This)s
14(sample)m
15(code)m
15(and)m
15 r 97 c
15(complete)m
15(Berkeley)m
15(Unix)m
15(implementation)m
15(is)m
15(available)m
15(in)m
15(ma-)m
150 1325 p (chine)s
15(readable)m
16(form)m
15(via)m
16(anonymous)m
15(ftp)m
16(from)m
15(Internet)m
15(host)m
16(ftp.ee.lbl.gov)m
15(\(128.3.254.68\),)m
150 1382 p (\014le)s
t-bol.330 @sf 11(cslip.tar)m
-3(.Z)m
t-rom.330 @sf 46 c
11(This)m
11(is)m
12 r 97 c
11(compressed)m
12(Unix)m
11(tar)m
11(\014le.)m
18(It)m
11(must)m
12(be)m
11(ftped)m
11(in)m
12(binary)m
11(mode.)m
150 1444 p (All)s
11(of)m
12(the)m
11(code)m
12(in)m
11(this)m
12(appendix)m
11(is)m
12(covered)m
11(by)m
12(the)m
11(following)m
11(copyright:)m
cmmi9.300 @sf 225 1529 p 61 c
cmsy9.300 @sf 3 c
244 1575 p 3 c
t-ita.270 @sf 18(Copyright)m
19(\(c\))m
19(1989)m
19(Regents)m
18(of)m
19(the)m
19(University)m
19(of)m
18(California.)m
cmsy9.300 @sf 244 1621 p 3 c
t-ita.270 @sf 18(All)m
19(rights)m
19 r 114 c
-1(eserved.)m
cmsy9.300 @sf 244 1666 p 3 c
244 1712 p 3 c
t-ita.270 @sf 18(Redistribution)m
19(and)m
19(use)m
19(in)m
18(sour)m
(ce)s
18(and)m
18(binary)m
19(forms)m
19(ar)m
101 c
17(permitted)m
cmsy9.300 @sf 244 1758 p 3 c
t-ita.270 @sf 18(pr)m
(ovided)s
18(that)m
18(the)m
19(above)m
19(copyright)m
19(notice)m
18(and)m
19(this)m
19(paragraph)m
19(ar)m
-1 r 101 c
cmsy9.300 @sf 244 1803 p 3 c
t-ita.270 @sf 18(duplicated)m
19(in)m
19(all)m
19(such)m
18(forms)m
19(and)m
19(that)m
19(any)m
18(documentation,)m
cmsy9.300 @sf 244 1849 p 3 c
t-ita.270 @sf 18(advertising)m
19(materials,)m
19(and)m
19(other)m
18(materials)m
19 r 114 c
(elated)s
17(to)m
19(such)m
cmsy9.300 @sf 244 1895 p 3 c
t-ita.270 @sf 18(distribution)m
19(and)m
19(use)m
19(acknowledge)m
18(that)m
19(the)m
19(softwar)m
-1 r 101 c
18(was)m
19(developed)m
cmsy9.300 @sf 244 1940 p 3 c
t-ita.270 @sf 18(by)m
19(the)m
19(University)m
19(of)m
18(California,)m
19(Berkeley)m
-1 r 46 c
37(The)m
18(name)m
19(of)m
19(the)m
cmsy9.300 @sf 244 1986 p 3 c
t-ita.270 @sf 18(University)m
19(may)m
19(not)m
19(be)m
18(used)m
19(to)m
19(endorse)m
19(or)m
18(pr)m
(omote)s
18(pr)m
-1(oducts)m
18(derived)m
cmsy9.300 @sf 244 2032 p 3 c
t-ita.270 @sf 18(fr)m
(om)s
18(this)m
18(softwar)m
101 c
18(without)m
19(speci\014c)m
18(prior)m
19(written)m
19(permission.)m
cmsy9.300 @sf 244 2077 p 3 c
t-ita.270 @sf 18(THIS)m
19(SOFTW)m
-1(ARE)m
17(IS)m
19(PROVIDED)m
19(\\AS)m
19(IS")m
18(AND)m
19(WITHOUT)m
19(ANY)m
19(EXPRESS)m
18(OR)m
cmsy9.300 @sf 244 2123 p 3 c
t-ita.270 @sf 18(IMPLIED)m
19 r 87 c
-1(ARRANTIES,)m
17(INCLUDING,)m
19(WITHOUT)m
19(LIMIT)m
-2 r 65 c
-1(TION,)m
17(THE)m
19(IMPLIED)m
cmsy9.300 @sf 244 2169 p 3 c
t-ita.270 @sf 18 r 87 c
-1(ARRANTIES)m
18(OF)m
18(MERCHANTIBILITY)m
19(AND)m
19(FITNESS)m
19(FOR)m
18 r 65 c
19 r 80 c
-4(ARTICULAR)m
18(PURPOSE.)m
cmsy9.300 @sf 244 2214 p 3 c
cmmi9.300 @sf 61 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(28])m
@eop
restore
%%Page: 29 31
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
29 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.360 @sf 150 233 p (A.1)s
50(De\014nitions)m
12(and)m
13(State)m
12(Data)m
t-bol.270 @sf 150 325 p (#de\014ne)s
t-rom.270 @sf 19(MAX)m
371 331 p 19 2 ru
390 325 p (ST)s
-2 r 65 c
-5(TES)m
18(16)m
cmmi9.300 @sf 24 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(must)m
18(be)m
cmmi9.300 @sf 19 r 62 c
t-ita.270 @sf 50 c
19(and)m
cmmi9.300 @sf 19 r 60 c
t-ita.270 @sf (255)s
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 370 p (#de\014ne)s
t-rom.270 @sf 19(MAX)m
371 377 p 19 2 ru
390 370 p (HDR)s
18(128)m
cmmi9.300 @sf 57 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 18(max)m
19(TCP)m
19 r 43 c
19(IP)m
18(hdr)m
19(length)m
19(\(fr)m
-1(om)m
18(pr)m
(otocol)s
18(def\))m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
150 462 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(packet)m
18(types)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 507 p (#de\014ne)s
t-rom.270 @sf 19(TYPE)m
377 514 p 19 2 ru
396 507 p (IP)s
19(0x40)m
t-bol.270 @sf 150 553 p (#de\014ne)s
t-rom.270 @sf 19(TYPE)m
377 560 p 19 2 ru
396 553 p (UNCOMPRESSED)s
696 560 p 19 2 ru
715 553 p (TCP)s
18(0x70)m
t-bol.270 @sf 150 599 p (#de\014ne)s
t-rom.270 @sf 19(TYPE)m
377 605 p 19 2 ru
396 599 p (COMPRESSED)s
642 605 p 19 2 ru
660 599 p (TCP)s
19(0x80)m
t-bol.270 @sf 150 644 p (#de\014ne)s
t-rom.270 @sf 19(TYPE)m
377 651 p 19 2 ru
396 644 p (ERROR)s
19(0x00)m
cmmi9.300 @sf 285 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(this)m
18(is)m
19(not)m
19 r 97 c
19(type)m
18(that)m
19(ever)m
19(appears)m
cmsy9.300 @sf 919 690 p 3 c
t-ita.270 @sf 18(on)m
19(the)m
19(wir)m
(e.)s
36(The)m
19 r 114 c
-1(eceive)m
18(framer)m
19(uses)m
cmsy9.300 @sf 919 736 p 3 c
t-ita.270 @sf 18(it)m
19(to)m
19(tell)m
19(the)m
18(decompr)m
(essor)s
18(ther)m
-1 r 101 c
18(was)m
t-rom.180 @sf 219(10)m
cmsy9.300 @sf 919 781 p 3 c
t-ita.270 @sf 18 r 97 c
19(packet)m
19(transmission)m
19(err)m
-1(or)m
-4 r 46 c
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
150 873 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Bits)m
18(in)m
19(\014rst)m
19(octet)m
19(of)m
18(compr)m
(essed)s
18(packet)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 918 p (#de\014ne)s
t-rom.270 @sf 19(NEW)m
369 925 p 19 2 ru
387 918 p 67 c
38(0x40)m
cmmi9.300 @sf 75 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(\015ag)m
18(bits)m
19(for)m
19(what)m
19(changed)m
18(in)m
19 r 97 c
19(packet)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 964 p (#de\014ne)s
t-rom.270 @sf 19(NEW)m
369 971 p 19 2 ru
387 964 p 73 c
51(0x20)m
t-bol.270 @sf 150 1010 p (#de\014ne)s
t-rom.270 @sf 19(TCP)m
352 1016 p 19 2 ru
371 1010 p (PUSH)s
467 1016 p 19 2 ru
485 1010 p (BIT)s
19(0x10)m
t-bol.270 @sf 150 1101 p (#de\014ne)s
t-rom.270 @sf 19(NEW)m
369 1108 p 19 2 ru
387 1101 p 83 c
42(0x08)m
t-bol.270 @sf 150 1147 p (#de\014ne)s
t-rom.270 @sf 19(NEW)m
369 1153 p 19 2 ru
387 1147 p 65 c
36(0x04)m
t-bol.270 @sf 150 1192 p (#de\014ne)s
t-rom.270 @sf 19(NEW)m
369 1199 p 19 2 ru
387 1192 p 87 c
28(0x02)m
t-rom.180 @sf 1250(20)m
t-bol.270 @sf 150 1238 p (#de\014ne)s
t-rom.270 @sf 19(NEW)m
369 1245 p 19 2 ru
387 1238 p 85 c
36(0x01)m
cmmi9.300 @sf 150 1329 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19 r 114 c
-1(eserved,)m
18(special)m
cmsy9.300 @sf 0 c
t-ita.270 @sf (case)s
19(values)m
19(of)m
18(above)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 1375 p (#de\014ne)s
t-rom.270 @sf 19(SPECIAL)m
435 1382 p 19 2 ru
454 1375 p 73 c
19(\(NEW)m
583 1382 p 19 2 ru
602 1375 p 83 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
719 1382 p 19 2 ru
738 1375 p 87 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
869 1382 p 19 2 ru
888 1375 p (U\))s
cmmi9.300 @sf 122 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(echoed)m
19(interactive)m
19(traf\014c)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 1421 p (#de\014ne)s
t-rom.270 @sf 19(SPECIAL)m
435 1427 p 19 2 ru
454 1421 p 68 c
19(\(NEW)m
598 1427 p 19 2 ru
617 1421 p 83 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
734 1427 p 19 2 ru
752 1421 p 65 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
875 1427 p 19 2 ru
894 1421 p 87 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
1026 1427 p 19 2 ru
1044 1421 p (U\))s
cmmi9.300 @sf 19 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(unidir)m
-1(ectional)m
18(data)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 1466 p (#de\014ne)s
t-rom.270 @sf 19(SPECIALS)m
456 1473 p 19 2 ru
475 1466 p (MASK)s
19(\(NEW)m
700 1473 p 19 2 ru
719 1466 p 83 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
836 1473 p 19 2 ru
854 1466 p 65 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
978 1473 p 19 2 ru
996 1466 p 87 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
1128 1473 p 19 2 ru
1146 1466 p (U\))s
cmmi9.300 @sf 150 1603 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19("state")m
18(data)m
19(for)m
19(each)m
19(active)m
18(tcp)m
19(conversation)m
19(on)m
19(the)m
18(wir)m
(e.)s
37(This)m
cmsy9.300 @sf 169 1649 p 3 c
t-ita.270 @sf 18(is)m
19(basically)m
19 r 97 c
19(copy)m
18(of)m
19(the)m
19(entir)m
101 c
17(IP)m
cmmi9.300 @sf 61 c
t-ita.270 @sf (TCP)s
19(header)m
19(fr)m
-1(om)m
18(the)m
19(last)m
19(packet)m
18(together)m
t-rom.180 @sf 294(30)m
cmsy9.300 @sf 169 1695 p 3 c
t-ita.270 @sf 18(with)m
19 r 97 c
19(small)m
19(identi\014er)m
18(the)m
19(transmit)m
19 r 38 c
19 r 114 c
-1(eceive)m
18(ends)m
19(of)m
19(the)m
18(line)m
19(use)m
19(to)m
19(locate)m
cmsy9.300 @sf 169 1740 p 3 c
t-ita.270 @sf 18(saved)m
19(header)m
-3 r 46 c
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 1786 p (struct)s
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 18 r 102 c
t-bol.270 @sf 300 1832 p (struct)s
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (cs)s
567 1838 p 19 2 ru
586 1832 p (next;)s
cmmi9.300 @sf 89 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(next)m
18(most)m
19 r 114 c
(ecently)s
18(used)m
18(cstate)m
19(\(xmit)m
19(only\))m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 1877 p 117 c
321 1884 p 19 2 ru
340 1877 p (short)s
t-rom.270 @sf 18(cs)m
473 1884 p 19 2 ru
492 1877 p (hlen;)s
cmmi9.300 @sf 183 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(size)m
18(of)m
19(hdr)m
19(\(r)m
(eceive)s
17(only\))m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 1923 p 117 c
321 1930 p 19 2 ru
340 1923 p (char)s
t-rom.270 @sf 18(cs)m
462 1930 p 19 2 ru
481 1923 p (id;)s
cmmi9.300 @sf 229 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(connection)m
19 r 35 c
19(associated)m
18(with)m
19(this)m
19(state)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 1969 p 117 c
321 1975 p 19 2 ru
340 1969 p (char)s
t-rom.270 @sf 18(cs)m
462 1975 p 19 2 ru
481 1969 p (\014ller;)s
t-bol.270 @sf 300 2014 p (union)s
cmsy9.300 @sf 19 r 102 c
t-bol.270 @sf 450 2060 p (char)s
t-rom.270 @sf 19(hdr[MAX)m
692 2067 p 19 2 ru
710 2060 p (HDR];)s
t-bol.270 @sf 450 2106 p (struct)s
t-rom.270 @sf 19(ip)m
18(csu)m
660 2112 p 19 2 ru
679 2106 p (ip;)s
cmmi9.300 @sf 181 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(ip)m
cmmi9.300 @sf 61 c
t-ita.270 @sf (tcp)s
19(hdr)m
19(fr)m
-1(om)m
18(most)m
19 r 114 c
-1(ecent)m
18(packet)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.180 @sf 190(40)m
cmsy9.300 @sf 300 2151 p 103 c
t-rom.270 @sf 19(slcs)m
394 2158 p 19 2 ru
413 2151 p (u;)s
cmsy9.300 @sf 150 2197 p 103 c
t-rom.270 @sf 59 c
t-bol.270 @sf 150 2243 p (#de\014ne)s
t-rom.270 @sf 19(cs)m
315 2249 p 19 2 ru
333 2243 p (ip)s
19(slcs)m
438 2249 p 19 2 ru
456 2243 p (u.csu)s
534 2249 p 19 2 ru
553 2243 p (ip)s
t-bol.270 @sf 150 2288 p (#de\014ne)s
t-rom.270 @sf 19(cs)m
315 2295 p 19 2 ru
333 2288 p (hdr)s
19(slcs)m
458 2295 p 19 2 ru
477 2288 p (u.csu)s
555 2295 p 19 2 ru
574 2288 p (hdr)s
cmmi9.300 @sf 150 2379 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(all)m
18(the)m
19(state)m
19(data)m
19(for)m
18(one)m
19(serial)m
19(line)m
19(\(we)m
18(need)m
19(one)m
19(of)m
19(these)m
18(per)m
19(line\).)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 2425 p (struct)s
t-rom.270 @sf 19(slcompress)m
cmsy9.300 @sf 18 r 102 c
t-bol.270 @sf 300 2471 p (struct)s
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (last)s
588 2477 p 19 2 ru
607 2471 p (cs;)s
cmmi9.300 @sf 401 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(most)m
19 r 114 c
-1(ecently)m
18(used)m
19(tstate)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 2516 p 117 c
321 2523 p 19 2 ru
340 2516 p (char)s
t-rom.270 @sf 18(last)m
483 2523 p 19 2 ru
502 2516 p (recv;)s
cmmi9.300 @sf 473 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(last)m
19 r 114 c
-1(cvd)m
18(conn.)m
19(id)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 2562 p 117 c
321 2569 p 19 2 ru
340 2562 p (char)s
t-rom.270 @sf 18(last)m
483 2569 p 19 2 ru
502 2562 p (xmit;)s
cmmi9.300 @sf 469 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(last)m
18(sent)m
19(conn.)m
19(id)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.180 @sf 328(50)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(29])m
@eop
restore
%%Page: 30 32
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<000C000C001C0018001800380030003000700060006000E000C000C001C0018001800380030007
00060006000E000C000C001C0018001800380030003000700060006000E000C000C000> 16 37 -2 9 19.198] 110 @dc
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
cmsy9.300 @sf
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
30 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.270 @sf 300 233 p 117 c
321 239 p 19 2 ru
340 233 p (short)s
t-rom.270 @sf 18(\015ags;)m
t-bol.270 @sf 300 278 p (struct)s
t-rom.270 @sf 19(cstate)m
18(tstate[MAX)m
696 285 p 19 2 ru
714 278 p (ST)s
-2 r 65 c
-4(TES];)m
cmmi9.300 @sf 182 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 18(xmit)m
19(connection)m
19(states)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 324 p (struct)s
t-rom.270 @sf 19(cstate)m
18(rstate[MAX)m
698 331 p 19 2 ru
717 324 p (ST)s
-2 r 65 c
-5(TES];)m
cmmi9.300 @sf 180 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 18 r 114 c
(eceive)s
18(connection)m
18(states)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
cmsy9.300 @sf 150 370 p 103 c
t-rom.270 @sf 59 c
cmmi9.300 @sf 150 415 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(\015ag)m
18(values)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 461 p (#de\014ne)s
t-rom.270 @sf 19(SLF)m
348 468 p 19 2 ru
367 461 p 84 c
(OSS)s
18 r 49 c
cmmi9.300 @sf 255 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 18(tossing)m
19 r 114 c
(cvd)s
17(frames)m
19(because)m
19(of)m
19(input)m
18(err)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
150 552 p 61 c
cmsy9.300 @sf 3 c
169 598 p 3 c
t-ita.270 @sf 18(The)m
19(following)m
19(macr)m
(os)s
17(ar)m
101 c
18(used)m
18(to)m
19(encode)m
19(and)m
19(decode)m
18(numbers.)m
38(They)m
cmsy9.300 @sf 169 644 p 3 c
t-ita.270 @sf 18(all)m
38(assume)m
19(that)m
18(`cp')m
19(points)m
19(to)m
19 r 97 c
18(buffer)m
19(wher)m
101 c
18(the)m
18(next)m
19(byte)m
t-rom.180 @sf 584(60)m
cmsy9.300 @sf 169 689 p 3 c
t-ita.270 @sf 18(encoded)m
19(\(decoded\))m
19(is)m
19(to)m
18(be)m
19(stor)m
(ed)s
18(\(r)m
-1(etrieved\).)m
37(Since)m
18(the)m
19(decode)m
cmsy9.300 @sf 169 735 p 3 c
t-ita.270 @sf 18 r 114 c
(outines)s
18(do)m
19(arithmetic,)m
18(they)m
19(have)m
19(to)m
19(convert)m
18(fr)m
(om)s
18(and)m
18(to)m
19(network)m
cmsy9.300 @sf 169 781 p 3 c
t-ita.270 @sf 18(byte)m
19(or)m
(der)s
-4 r 46 c
cmsy9.300 @sf 169 826 p 3 c
cmmi9.300 @sf 61 c
150 918 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(ENCODE)m
18(encodes)m
19 r 97 c
19(number)m
19(that)m
18(is)m
19(known)m
19(to)m
19(be)m
18(non)m
cmsy9.300 @sf 0 c
t-ita.270 @sf (zer)s
(o.)s
37(ENCODEZ)m
cmsy9.300 @sf 169 963 p 3 c
t-ita.270 @sf 18(checks)m
19(for)m
19(zer)m
111 c
17(\(zer)m
111 c
18(has)m
18(to)m
19(be)m
19(encoded)m
19(in)m
18(the)m
19(long,)m
19 r 51 c
19(byte)m
18(form\).)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 1009 p (#de\014ne)s
t-rom.270 @sf 19(ENCODE\(n\))m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-bol.270 @sf 300 1054 p (if)s
t-rom.270 @sf 19(\(\()m
t-bol.270 @sf 117 c
387 1061 p 19 2 ru
406 1054 p (short)s
t-rom.270 @sf (\)\(n\))s
cmmi9.300 @sf 19 r 62 c
t-rom.270 @sf 61 c
19(256\))m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
450 1100 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(0;)m
cmsy9.300 @sf 19 r 110 c
t-rom.180 @sf 1103(70)m
t-rom.270 @sf 450 1146 p (cp[1])s
19 r 61 c
18(\(n\);)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 1191 p (cp[0])s
19 r 61 c
18(\(n\))m
cmmi9.300 @sf 19 r 62 c
-14 r 62 c
t-rom.270 @sf 18(8;)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 1237 p (cp)s
19(+=)m
18(2;)m
cmsy9.300 @sf 19 r 110 c
300 1283 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
450 1328 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(\(n\);)m
cmsy9.300 @sf 19 r 110 c
300 1374 p 103 c
19 r 110 c
150 1420 p 103 c
t-bol.270 @sf 150 1465 p (#de\014ne)s
t-rom.270 @sf 19(ENCODEZ\(n\))m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-bol.270 @sf 300 1511 p (if)s
t-rom.270 @sf 19(\(\()m
t-bol.270 @sf 117 c
387 1518 p 19 2 ru
406 1511 p (short)s
t-rom.270 @sf (\)\(n\))s
cmmi9.300 @sf 19 r 62 c
t-rom.270 @sf 61 c
19(256)m
cmsy9.300 @sf 18(jj)m
t-rom.270 @sf 19 r 40 c
t-bol.270 @sf 117 c
783 1518 p 19 2 ru
801 1511 p (short)s
t-rom.270 @sf (\)\(n\))s
19(==)m
19(0\))m
cmsy9.300 @sf 19 r 102 c
18 r 110 c
450 1557 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(0;)m
cmsy9.300 @sf 19 r 110 c
t-rom.180 @sf 1103(80)m
t-rom.270 @sf 450 1602 p (cp[1])s
19 r 61 c
18(\(n\);)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 1648 p (cp[0])s
19 r 61 c
18(\(n\))m
cmmi9.300 @sf 19 r 62 c
-14 r 62 c
t-rom.270 @sf 18(8;)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 1694 p (cp)s
19(+=)m
18(2;)m
cmsy9.300 @sf 19 r 110 c
300 1739 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
450 1785 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(\(n\);)m
cmsy9.300 @sf 19 r 110 c
300 1831 p 103 c
19 r 110 c
150 1876 p 103 c
cmmi9.300 @sf 150 1968 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(DECODEL)m
18(takes)m
19(the)m
19(\(compr)m
(essed\))s
17(change)m
19(at)m
19(byte)m
19(cp)m
18(and)m
19(adds)m
19(it)m
19(to)m
cmsy9.300 @sf 169 2013 p 3 c
t-ita.270 @sf 18(the)m
19(curr)m
(ent)s
18(value)m
18(of)m
19(packet)m
19(\014eld)m
19('f)m
3 r 39 c
19(\(which)m
19(must)m
18(be)m
19 r 97 c
19 r 52 c
cmsy9.300 @sf 0 c
t-ita.270 @sf (byte)s
t-rom.180 @sf 557(90)m
cmsy9.300 @sf 169 2059 p 3 c
t-ita.270 @sf 18(\(long\))m
19(integer)m
19(in)m
19(network)m
18(byte)m
19(or)m
(der\).)s
36(DECODES)m
19(does)m
19(the)m
19(same)m
cmsy9.300 @sf 169 2105 p 3 c
t-ita.270 @sf 18(for)m
19 r 97 c
19 r 50 c
cmsy9.300 @sf 0 c
t-ita.270 @sf (byte)s
19(\(short\))m
18(\014eld.)m
38(DECODEU)m
19(takes)m
18(the)m
19(change)m
19(at)m
19(cp)m
18(and)m
19(stuffs)m
cmsy9.300 @sf 169 2150 p 3 c
t-ita.270 @sf 18(it)m
19(into)m
19(the)m
19(\(short\))m
18(\014eld)m
19(f.)m
38('cp')m
18(is)m
19(updated)m
19(to)m
19(point)m
18(to)m
19(the)m
cmsy9.300 @sf 169 2196 p 3 c
t-ita.270 @sf 18(next)m
19(\014eld)m
19(in)m
19(the)m
18(compr)m
(essed)s
18(header)m
-3 r 46 c
cmsy9.300 @sf 17 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 150 2242 p (#de\014ne)s
t-rom.270 @sf 19(DECODEL\(f\))m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-bol.270 @sf 300 2287 p (if)s
t-rom.270 @sf 19 r 40 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp)s
18(==)m
19(0\))m
cmsy9.300 @sf 19(fn)m
t-rom.270 @sf 450 2333 p (\(f\))s
19 r 61 c
18(htonl\(ntohl\(f\))m
19 r 43 c
19(\(\(cp[1])m
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 17(8\))m
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 19(cp[2]\)\);)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 2379 p (cp)s
19(+=)m
18(3;)m
cmsy9.300 @sf 19 r 110 c
300 2424 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-rom.270 @sf 450 2470 p (\(f\))s
19 r 61 c
18(htonl\(ntohl\(f\))m
19 r 43 c
19 r 40 c
t-bol.270 @sf 117 c
842 2477 p 19 2 ru
861 2470 p (long)s
t-rom.270 @sf 41 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp++\);)s
cmsy9.300 @sf 19 r 110 c
t-rom.180 @sf 662(100)m
cmsy9.300 @sf 300 2516 p 103 c
19 r 110 c
150 2561 p 103 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(30])m
@eop
restore
%%Page: 31 33
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<000C000C001C0018001800380030003000700060006000E000C000C001C0018001800380030007
00060006000E000C000C001C0018001800380030003000700060006000E000C000C000> 16 37 -2 9 19.198] 110 @dc
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
cmsy9.300 @sf
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
31 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.270 @sf 150 233 p (#de\014ne)s
t-rom.270 @sf 19(DECODES\(f\))m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-bol.270 @sf 300 278 p (if)s
t-rom.270 @sf 19 r 40 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp)s
18(==)m
19(0\))m
cmsy9.300 @sf 19(fn)m
t-rom.270 @sf 450 324 p (\(f\))s
19 r 61 c
18(htons\(ntohs\(f\))m
19 r 43 c
19(\(\(cp[1])m
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 17(8\))m
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 19(cp[2]\)\);)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 370 p (cp)s
19(+=)m
18(3;)m
cmsy9.300 @sf 19 r 110 c
300 415 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-rom.270 @sf 450 461 p (\(f\))s
19 r 61 c
18(htons\(ntohs\(f\))m
19 r 43 c
19 r 40 c
t-bol.270 @sf 117 c
851 468 p 19 2 ru
869 461 p (long)s
t-rom.270 @sf 41 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp++\);)s
cmsy9.300 @sf 19 r 110 c
300 507 p 103 c
19 r 110 c
150 552 p 103 c
t-rom.180 @sf 1594 r 49 c
(10)s
t-bol.270 @sf 150 598 p (#de\014ne)s
t-rom.270 @sf 19(DECODEU\(f\))m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-bol.270 @sf 300 644 p (if)s
t-rom.270 @sf 19 r 40 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp)s
18(==)m
19(0\))m
cmsy9.300 @sf 19(fn)m
t-rom.270 @sf 450 689 p (\(f\))s
19 r 61 c
18(htons\(\(cp[1])m
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 18(8\))m
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 18(cp[2]\);)m
cmsy9.300 @sf 19 r 110 c
t-rom.270 @sf 450 735 p (cp)s
19(+=)m
18(3;)m
cmsy9.300 @sf 19 r 110 c
300 781 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
19 r 110 c
t-rom.270 @sf 450 826 p (\(f\))s
19 r 61 c
18(htons\(\()m
t-bol.270 @sf 117 c
673 833 p 19 2 ru
692 826 p (long)s
t-rom.270 @sf 41 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp++\);)s
cmsy9.300 @sf 19 r 110 c
300 872 p 103 c
19 r 110 c
150 918 p 103 c
t-bol.360 @sf 150 1029 p (A.2)s
50(Compr)m
(ession)s
t-rom.330 @sf 150 1126 p (This)s
12(routine)m
12(looks)m
12(daunting)m
11(but)m
12(isn')m
116 c
11(really)m
-2 r 46 c
18(The)m
11(code)m
12(splits)m
12(into)m
12(four)m
12(approximately)m
12(equal)m
150 1182 p (sized)s
17(sections:)m
28(The)m
17(\014rst)m
17(quarter)m
18(manages)m
17 r 97 c
17(circularly)m
17(linked,)m
18(least-recently-used)m
17(list)m
17(of)m
150 1239 p (\\active")s
8(TCP)m
8(connections.)m
t-rom.240 @sf 634 1222 p (46)s
t-rom.330 @sf 688 1239 p (The)s
8(second)m
8(\014gures)m
9(out)m
8(the)m
8(sequence/ack/window/ur)m
103 c
7(changes)m
150 1295 p (and)s
9(builds)m
8(the)m
9(bulk)m
9(of)m
8(the)m
9(compressed)m
9(packet.)m
16(The)m
8(third)m
9(handles)m
9(the)m
8(special-case)m
9(encodings.)m
150 1352 p (The)s
8(last)m
8(quarter)m
9(does)m
8(packet)m
8(ID)m
8(and)m
9(connection)m
8(ID)m
8(encoding)m
8(and)m
8(replaces)m
9(the)m
8(original)m
8(packet)m
150 1408 p (header)s
11(with)m
12(the)m
11(compressed)m
12(header)m
-2 r 46 c
221 1472 p (The)s
9(ar)m
(guments)s
8(to)m
9(this)m
9(routine)m
9(are)m
10 r 97 c
9(pointer)m
9(to)m
9 r 97 c
9(packet)m
9(to)m
9(be)m
10(compressed,)m
9 r 97 c
9(pointer)m
9(to)m
10(the)m
150 1529 p (compression)s
13(state)m
12(data)m
13(for)m
13(the)m
12(serial)m
13(line,)m
13(and)m
12 r 97 c
13(\015ag)m
13(which)m
12(enables)m
13(or)m
13(disables)m
12(connection)m
150 1585 p (id)s
11(\(C)m
12(bit\))m
11(compression.)m
221 1650 p (Compression)s
10(is)m
10(done)m
10(\\in-place")m
10(so,)m
11(if)m
10 r 97 c
10(compressed)m
11(packet)m
10(is)m
10(created,)m
11(both)m
10(the)m
10(start)m
10(ad-)m
150 1706 p (dress)s
8(and)m
9(length)m
8(of)m
8(the)m
9(incoming)m
8(packet)m
9(\(the)m
t-ita.330 @sf 8(off)m
t-rom.330 @sf 8(and)m
t-ita.330 @sf 9(len)m
t-rom.330 @sf 8(\014elds)m
8(of)m
t-ita.330 @sf 9 r 109 c
t-rom.330 @sf 41 c
8(will)m
8(be)m
9(updated)m
8(to)m
8(re\015ect)m
150 1763 p (the)s
9(removal)m
10(of)m
9(the)m
9(original)m
10(header)m
9(and)m
9(its)m
9(replacement)m
10(by)m
9(the)m
9(compressed)m
10(header)m
-2 r 46 c
16(If)m
9(either)m
9 r 97 c
150 1819 p (compressed)s
10(or)m
9(uncompressed)m
10(packet)m
9(is)m
10(created,)m
10(the)m
10(compression)m
9(state)m
10(is)m
9(updated.)m
17(This)m
10(rou-)m
150 1876 p (tines)s
11(returns)m
11(the)m
11(packet)m
11(type)m
10(for)m
11(the)m
11(transmit)m
11(framer)m
11 r 40 c
t-romsc.330 @sf (type)s
1208 1882 p 23 2 ru
1234 1876 p (ip,)s
11(type)m
1384 1882 p 23 2 ru
1410 1876 p (uncompressed)s
1707 1882 p 23 2 ru
1733 1876 p (tcp)s
t-rom.330 @sf 150 1932 p (or)s
t-romsc.330 @sf 11(type)m
294 1939 p 23 2 ru
320 1932 p (compressed)s
564 1939 p 23 2 ru
590 1932 p (tcp)s
t-rom.330 @sf (\).)s
221 1996 p (Because)s
16(16)m
16(and)m
17(32)m
16(bit)m
17(arithmetic)m
16(is)m
17(done)m
16(on)m
16(various)m
17(header)m
16(\014elds,)m
18(the)m
16(incoming)m
17(IP)m
150 2053 p (packet)s
9(must)m
9(be)m
9(aligned)m
10(appropriately)m
9(\(e.g.,)m
9(on)m
10 r 97 c
9(SP)m
-3(ARC,)m
8(the)m
9(IP)m
9(header)m
9(is)m
9(aligned)m
9(on)m
10 r 97 c
9(32-bit)m
150 2109 p (boundary\).)s
19(Substantial)m
12(changes)m
12(would)m
12(have)m
12(to)m
12(be)m
12(made)m
12(to)m
12(the)m
12(code)m
12(below)m
12(if)m
12(this)m
12(were)m
12(not)m
150 2166 p (true)s
15(\(and)m
15(it)m
15(would)m
15(probably)m
15(be)m
15(cheaper)m
15(to)m
15(byte)m
14(copy)m
15(the)m
15(incoming)m
15(header)m
15(to)m
15(somewhere)m
150 2222 p (correctly)s
11(aligned)m
12(than)m
11(to)m
12(make)m
11(those)m
12(changes\).)m
221 2286 p (Note)s
10(that)m
10(the)m
11(outgoing)m
10(packet)m
10(will)m
10(be)m
11(aligned)m
10(arbitrarily)m
10(\(e.g.,)m
11(it)m
10(could)m
11(easily)m
10(start)m
10(on)m
11(an)m
150 2343 p (odd-byte)s
11(boundary\).)m
150 2419 p 660 2 ru
t-rom.180 @sf 187 2455 p (46)s
t-rom.270 @sf 217 2471 p (The)s
9(two)m
8(most)m
8(common)m
8(operations)m
8(on)m
9(the)m
8(connection)m
8(list)m
8(are)m
8 r 97 c
9(`\014nd')m
8(that)m
8(terminates)m
8(at)m
8(the)m
9(\014rst)m
8(entry)m
8(\(a)m
8(new)m
150 2516 p (packet)s
11(for)m
10(the)m
11(most)m
10(recently)m
11(used)m
11(connection\))m
10(and)m
11(moving)m
11(the)m
10(last)m
11(entry)m
10(on)m
11(the)m
11(list)m
10(to)m
11(the)m
11(head)m
10(of)m
11(the)m
10(list)m
11(\(the)m
150 2562 p (\014rst)s
9(packet)m
10(from)m
9 r 97 c
9(new)m
10(connection\).)m
14 r 65 c
9(circular)m
10(list)m
9(ef)m
(\014ciently)s
9(handles)m
9(these)m
10(two)m
9(operations.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(31])m
@eop
restore
%%Page: 32 34
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
cmsy9.300 @sf
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
32 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.270 @sf 150 233 p 117 c
171 239 p 19 2 ru
190 233 p (char)s
t-rom.270 @sf 150 278 p (sl)s
175 285 p 19 2 ru
194 278 p (compress)s
335 285 p 19 2 ru
354 278 p (tcp\(m,)s
19(comp,)m
19(compress)m
723 285 p 19 2 ru
742 278 p (cid\))s
t-bol.270 @sf 300 324 p (struct)s
t-rom.270 @sf 19(mbuf)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (m;)s
t-bol.270 @sf 300 370 p (struct)s
t-rom.270 @sf 19(slcompress)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (comp;)s
t-bol.270 @sf 300 415 p (int)s
t-rom.270 @sf 19(compress)m
504 422 p 19 2 ru
523 415 p (cid;)s
cmsy9.300 @sf 150 461 p 102 c
t-bol.270 @sf 300 507 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (cs)s
18 r 61 c
19(comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
950 513 p 19 2 ru
969 507 p (cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1079 513 p 19 2 ru
1098 507 p (next;)s
t-bol.270 @sf 300 552 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(ip)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (ip)s
18 r 61 c
19(mtod\(m,)m
t-bol.270 @sf 19(struct)m
t-rom.270 @sf 19(ip)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\);)s
t-bol.270 @sf 300 598 p 114 c
(egister)s
18 r 117 c
462 605 p 19 2 ru
481 598 p (int)s
t-rom.270 @sf 18(hlen)m
19 r 61 c
19(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
772 605 p 19 2 ru
791 598 p (hl;)s
t-bol.270 @sf 300 644 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (oth;)s
cmmi9.300 @sf 154 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(last)m
19(TCP)m
18(header)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.180 @sf 496(10)m
t-bol.270 @sf 300 689 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (th;)s
cmmi9.300 @sf 173 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(curr)m
-1(ent)m
18(TCP)m
19(header)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 735 p 114 c
(egister)s
18 r 117 c
462 742 p 19 2 ru
481 735 p (int)s
t-rom.270 @sf 18(deltaS,)m
19(deltaA;)m
cmmi9.300 @sf 125 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 18(general)m
19(purpose)m
19(temporaries)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 781 p 114 c
(egister)s
18 r 117 c
462 787 p 19 2 ru
481 781 p (int)s
t-rom.270 @sf 18(changes)m
19 r 61 c
19(0;)m
cmmi9.300 @sf 148 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(change)m
19(mask)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 826 p 117 c
321 833 p 19 2 ru
340 826 p (char)s
t-rom.270 @sf 18(new)m
494 833 p 19 2 ru
512 826 p (seq[16];)s
cmmi9.300 @sf 265 r 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(changes)m
19(fr)m
-1(om)m
18(last)m
19(to)m
18(curr)m
(ent)s
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 872 p 114 c
(egister)s
18 r 117 c
462 878 p 19 2 ru
481 872 p (char)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (cp)s
19 r 61 c
19(new)m
748 878 p 19 2 ru
767 872 p (seq;)s
cmmi9.300 @sf 300 963 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Bail)m
18(if)m
19(this)m
19(is)m
19(an)m
18(IP)m
19(fragment)m
19(or)m
19(if)m
18(the)m
19(TCP)m
19(packet)m
19(isn')m
-3 r 116 c
cmsy9.300 @sf 319 1009 p 3 c
t-ita.270 @sf 18(`compr)m
(essible')s
18(\(i.e.,)m
19(ACK)m
18(isn')m
-3 r 116 c
18(set)m
19(or)m
18(some)m
19(other)m
19(contr)m
(ol)s
17(bit)m
19(is)m
cmsy9.300 @sf 319 1054 p 3 c
t-ita.270 @sf 18(set\).)m
38(\(W)m
-2 r 101 c
17(assume)m
19(that)m
19(the)m
19(caller)m
18(has)m
19(alr)m
(eady)s
17(made)m
19(sur)m
101 c
18(the)m
cmsy9.300 @sf 319 1100 p 3 c
t-ita.270 @sf 18(packet)m
19(is)m
19(IP)m
19(pr)m
-1(oto)m
18(TCP\).)m
cmsy9.300 @sf 38 r 3 c
cmmi9.300 @sf 61 c
t-rom.180 @sf 938(20)m
t-bol.270 @sf 300 1146 p (if)s
t-rom.270 @sf 19(\(\(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
473 1152 p 19 2 ru
492 1146 p (of)s
102 c
18 r 38 c
18(htons\(0x3f)m
102 c
(f\)\))s
cmsy9.300 @sf 18(jj)m
t-rom.270 @sf 19 r 109 c
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf 109 c
977 1152 p 19 2 ru
996 1146 p (len)s
cmmi9.300 @sf 19 r 60 c
t-rom.270 @sf 19(40\))m
t-bol.270 @sf 450 1191 p 114 c
(eturn)s
t-rom.270 @sf 18(\(TYPE)m
678 1198 p 19 2 ru
697 1191 p (IP\);)s
300 1283 p (th)s
19 r 61 c
18 r 40 c
t-bol.270 @sf (struct)s
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&\(\()s
t-bol.270 @sf (int)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)ip\)[hlen];)s
t-bol.270 @sf 300 1328 p (if)s
t-rom.270 @sf 19(\(\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
473 1335 p 19 2 ru
492 1328 p (\015ags)s
18 r 38 c
19(\(TH)m
692 1335 p 19 2 ru
710 1328 p (SYN)s
cmsy9.300 @sf 106 c
t-rom.270 @sf (TH)s
846 1335 p 19 2 ru
865 1328 p (FIN)s
cmsy9.300 @sf 106 c
t-rom.270 @sf (TH)s
986 1335 p 19 2 ru
1005 1328 p (RST)s
cmsy9.300 @sf 106 c
t-rom.270 @sf (TH)s
1134 1335 p 19 2 ru
1153 1328 p (ACK\)\))s
18(!=)m
19(TH)m
1378 1335 p 19 2 ru
1397 1328 p (ACK\))s
t-bol.270 @sf 450 1374 p 114 c
(eturn)s
t-rom.270 @sf 18(\(TYPE)m
678 1381 p 19 2 ru
697 1374 p (IP\);)s
cmmi9.300 @sf 300 1465 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Packet)m
18(is)m
19(compr)m
(essible)s
cmsy9.300 @sf 18(\000\000)m
t-ita.270 @sf 18(we'r)m
101 c
18(going)m
18(to)m
19(send)m
19(either)m
19 r 97 c
cmsy9.300 @sf 319 1511 p 3 c
t-ita.270 @sf 18(COMPRESSED)m
596 1518 p 19 2 ru
615 1511 p (TCP)s
19(or)m
18(UNCOMPRESSED)m
1046 1518 p 19 2 ru
1065 1511 p (TCP)s
19(packet.)m
37(Either)m
19(way)m
19(we)m
18(need)m
cmsy9.300 @sf 319 1557 p 3 c
t-ita.270 @sf 18(to)m
19(locate)m
19(\(or)m
19(cr)m
-1(eate\))m
18(the)m
19(connection)m
19(state.)m
37(Special)m
19(case)m
19(the)m
t-rom.180 @sf 445(30)m
cmsy9.300 @sf 319 1602 p 3 c
t-ita.270 @sf 18(most)m
19 r 114 c
(ecently)s
18(used)m
18(connection)m
19(since)m
19(it')m
-4 r 115 c
18(most)m
19(likely)m
18(to)m
19(be)m
19(used)m
cmsy9.300 @sf 319 1648 p 3 c
t-ita.270 @sf 18(again)m
19 r 38 c
19(we)m
19(don')m
-3 r 116 c
17(have)m
19(to)m
19(do)m
19(any)m
18 r 114 c
(eor)s
-1(dering)m
17(if)m
19(it')m
-4 r 115 c
18(used.)m
cmsy9.300 @sf 37 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 1694 p (if)s
t-rom.270 @sf 19(\(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
460 1700 p 19 2 ru
479 1694 p (src.s)s
547 1700 p 19 2 ru
566 1694 p (addr)s
18(!=)m
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
814 1700 p 19 2 ru
832 1694 p (ip.ip)s
900 1700 p 19 2 ru
919 1694 p (src.s)s
987 1700 p 19 2 ru
1005 1694 p (addr)s
cmsy9.300 @sf 19(jj)m
t-rom.270 @sf 375 1739 p (ip)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
481 1746 p 19 2 ru
500 1739 p (dst.s)s
568 1746 p 19 2 ru
586 1739 p (addr)s
19(!=)m
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
835 1746 p 19 2 ru
853 1739 p (ip.ip)s
921 1746 p 19 2 ru
940 1739 p (dst.s)s
1008 1746 p 19 2 ru
1026 1739 p (addr)s
cmsy9.300 @sf 19(jj)m
375 1785 p 3 c
t-rom.270 @sf 40 c
t-bol.270 @sf (int)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)th)s
18(!=)m
19(\(\()m
t-bol.270 @sf (int)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
860 1792 p 19 2 ru
879 1785 p (ip\)[cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1043 1792 p 19 2 ru
1062 1785 p (ip.ip)s
1130 1792 p 19 2 ru
1148 1785 p (hl]\))s
cmsy9.300 @sf 19 r 102 c
cmmi9.300 @sf 450 1876 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19 r 87 c
-3(asn')m
-4 r 116 c
18(the)m
19(\014rst)m
cmsy9.300 @sf 18(\000\000)m
t-ita.270 @sf 19(sear)m
(ch)s
17(for)m
19(it.)m
cmsy9.300 @sf 469 1922 p 3 c
469 1968 p 3 c
t-ita.270 @sf 18(States)m
19(ar)m
101 c
18(kept)m
18(in)m
19 r 97 c
19(cir)m
-1(cularly)m
18(linked)m
19(list)m
19(with)m
cmsy9.300 @sf 469 2013 p 3 c
t-ita.270 @sf 18(last)m
561 2020 p 19 2 ru
580 2013 p (cs)s
18(pointing)m
19(to)m
19(the)m
19(end)m
18(of)m
19(the)m
19(list.)m
37(The)m
t-rom.180 @sf 555(40)m
cmsy9.300 @sf 469 2059 p 3 c
t-ita.270 @sf 18(list)m
19(is)m
19(kept)m
19(in)m
18(lru)m
19(or)m
(der)s
18(by)m
18(moving)m
19 r 97 c
19(state)m
19(to)m
18(the)m
cmsy9.300 @sf 469 2105 p 3 c
t-ita.270 @sf 18(head)m
19(of)m
19(the)m
19(list)m
18(whenever)m
19(it)m
19(is)m
19 r 114 c
-1(efer)m
-1(enced.)m
36(Since)m
cmsy9.300 @sf 469 2150 p 3 c
t-ita.270 @sf 18(the)m
19(list)m
19(is)m
19(short)m
18(and,)m
19(empirically)m
-1 r 44 c
18(the)m
19(connection)m
cmsy9.300 @sf 469 2196 p 3 c
t-ita.270 @sf 18(we)m
19(want)m
19(is)m
19(almost)m
18(always)m
19(near)m
19(the)m
19(fr)m
-1(ont,)m
18(we)m
19(locate)m
cmsy9.300 @sf 469 2242 p 3 c
t-ita.270 @sf 18(states)m
19(via)m
19(linear)m
19(sear)m
-1(ch.)m
37(If)m
19(we)m
18(don')m
-3 r 116 c
18(\014nd)m
19 r 97 c
18(state)m
cmsy9.300 @sf 469 2287 p 3 c
t-ita.270 @sf 18(for)m
19(the)m
19(datagram,)m
19(the)m
18(oldest)m
19(state)m
19(is)m
19(\(r)m
-1 r 101 c
cmsy9.300 @sf 0 c
t-ita.270 @sf (\)used.)s
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 450 2333 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (lcs;)s
t-bol.270 @sf 450 2379 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (lastcs)s
18 r 61 c
19(comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
1152 2385 p 19 2 ru
1171 2379 p (cs;)s
t-bol.270 @sf 450 2470 p (do)s
cmsy9.300 @sf 19 r 102 c
t-rom.180 @sf 1247(50)m
t-rom.270 @sf 600 2516 p (lcs)s
19 r 61 c
18(cs;)m
19(cs)m
19 r 61 c
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
961 2522 p 19 2 ru
980 2516 p (next;)s
t-bol.270 @sf 600 2561 p (if)s
t-rom.270 @sf 19(\(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
760 2568 p 19 2 ru
779 2561 p (src.s)s
847 2568 p 19 2 ru
866 2561 p (addr)s
18(==)m
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1122 2568 p 19 2 ru
1141 2561 p (ip.ip)s
1209 2568 p 19 2 ru
1228 2561 p (src.s)s
1295 2568 p 19 2 ru
1314 2561 p (addr)s
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(32])m
@eop
restore
%%Page: 33 35
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
cmsy9.300 @sf
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
33 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.270 @sf 675 233 p (&&)s
19(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
858 239 p 19 2 ru
877 233 p (dst.s)s
945 239 p 19 2 ru
964 233 p (addr)s
18(==)m
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1220 239 p 19 2 ru
1239 233 p (ip.ip)s
1307 239 p 19 2 ru
1326 233 p (dst.s)s
1393 239 p 19 2 ru
1412 233 p (addr)s
675 278 p (&&)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf 40 c
t-bol.270 @sf (int)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\)th)s
19(==)m
19(\(\()m
t-bol.270 @sf (int)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1246 285 p 19 2 ru
1264 278 p (ip\)[cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (cs)s
1429 285 p 19 2 ru
1448 278 p (ip.ip)s
1515 285 p 19 2 ru
1534 278 p (hl]\))s
t-bol.270 @sf 750 324 p (goto)s
t-rom.270 @sf 19(found;)m
cmsy9.300 @sf 450 370 p 103 c
t-bol.270 @sf 19(while)m
t-rom.270 @sf 18(\(cs)m
19(!=)m
19(lastcs\);)m
cmmi9.300 @sf 450 461 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Didn')m
-3 r 116 c
17(\014nd)m
19(it)m
cmsy9.300 @sf 19(\000\000)m
t-ita.270 @sf 19 r 114 c
-1 r 101 c
cmsy9.300 @sf 0 c
t-ita.270 @sf (use)s
18(oldest)m
19(cstate.)m
37(Send)m
19(an)m
cmsy9.300 @sf 469 507 p 3 c
t-ita.270 @sf 18(uncompr)m
(essed)s
18(packet)m
19(that)m
18(tells)m
19(the)m
19(other)m
19(side)m
18(what)m
cmsy9.300 @sf 469 552 p 3 c
t-ita.270 @sf 18(connection)m
19(number)m
19(we'r)m
101 c
17(using)m
19(for)m
19(this)m
19(conversation.)m
t-rom.180 @sf 410(60)m
cmsy9.300 @sf 469 598 p 3 c
t-ita.270 @sf 18(Note)m
19(that)m
19(since)m
19(the)m
18(state)m
19(list)m
19(is)m
19(cir)m
-1(cular)m
-4 r 44 c
18(the)m
19(oldest)m
cmsy9.300 @sf 469 644 p 3 c
t-ita.270 @sf 18(state)m
19(points)m
19(to)m
19(the)m
18(newest)m
19(and)m
19(we)m
19(only)m
18(need)m
19(to)m
19(set)m
cmsy9.300 @sf 469 689 p 3 c
t-ita.270 @sf 18(last)m
561 696 p 19 2 ru
580 689 p (cs)s
18(to)m
19(update)m
19(the)m
19(lru)m
18(linkage.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 450 735 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
633 742 p 19 2 ru
652 735 p (cs)s
19 r 61 c
19(lcs;)m
450 781 p (hlen)s
19(+=)m
18(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
701 787 p 19 2 ru
719 781 p (of)s
(f;)s
450 826 p (hlen)s
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 61 c
17(2;)m
t-bol.270 @sf 450 872 p (goto)s
t-rom.270 @sf 19(uncompressed;)m
300 963 p (found:)s
cmmi9.300 @sf 450 1009 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Found)m
18(it)m
cmsy9.300 @sf 19(\000\000)m
t-ita.270 @sf 19(move)m
19(to)m
18(the)m
19(fr)m
(ont)s
18(on)m
18(the)m
19(connection)m
19(list.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.180 @sf 316(70)m
t-bol.270 @sf 450 1054 p (if)s
t-rom.270 @sf 19(\(lastcs)m
18(==)m
19(cs\))m
600 1100 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
783 1107 p 19 2 ru
802 1100 p (cs)s
19 r 61 c
19(lcs;)m
t-bol.270 @sf 450 1146 p (else)s
cmsy9.300 @sf 19 r 102 c
t-rom.270 @sf 600 1191 p (lcs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
721 1198 p 19 2 ru
740 1191 p (next)s
18 r 61 c
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
973 1198 p 19 2 ru
992 1191 p (next;)s
600 1237 p (cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
710 1244 p 19 2 ru
729 1237 p (next)s
19 r 61 c
19(lastcs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1015 1244 p 19 2 ru
1034 1237 p (next;)s
600 1283 p (lastcs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
762 1289 p 19 2 ru
781 1283 p (next)s
19 r 61 c
19(cs;)m
cmsy9.300 @sf 450 1328 p 103 c
300 1374 p 103 c
cmmi9.300 @sf 300 1465 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Make)m
18(sur)m
101 c
18(that)m
19(only)m
18(what)m
19(we)m
19(expect)m
19(to)m
18(change)m
19(changed.)m
19(The)m
19(\014rst)m
t-rom.180 @sf 343(80)m
cmsy9.300 @sf 319 1511 p 3 c
t-ita.270 @sf 18(line)m
19(of)m
19(the)m
19(`if)m
3 r 39 c
19(checks)m
19(the)m
18(IP)m
19(pr)m
(otocol)s
18(version,)m
18(header)m
19(length)m
19 r 38 c
cmsy9.300 @sf 319 1557 p 3 c
t-ita.270 @sf 18(type)m
19(of)m
19(service.)m
37(The)m
19(2nd)m
19(line)m
19(checks)m
18(the)m
19("Don')m
-3 r 116 c
18(fragment")m
19(bit.)m
cmsy9.300 @sf 319 1602 p 3 c
t-ita.270 @sf 18(The)m
19(3r)m
100 c
18(line)m
18(checks)m
19(the)m
19(time)m
cmsy9.300 @sf 0 c
t-ita.270 @sf (to)s
cmsy9.300 @sf 0 c
t-ita.270 @sf (live)s
19(and)m
18(pr)m
(otocol)s
18(\(the)m
18(pr)m
(otocol)s
cmsy9.300 @sf 319 1648 p 3 c
t-ita.270 @sf 18(check)m
19(is)m
19(unnecessary)m
19(but)m
18(costless\).)m
38(The)m
19(4th)m
18(line)m
19(checks)m
19(the)m
19(TCP)m
cmsy9.300 @sf 319 1694 p 3 c
t-ita.270 @sf 18(header)m
19(length.)m
38(The)m
18(5th)m
19(line)m
19(checks)m
19(IP)m
18(options,)m
19(if)m
19(any)m
-1 r 46 c
36(The)m
19(6th)m
cmsy9.300 @sf 319 1739 p 3 c
t-ita.270 @sf 18(line)m
19(checks)m
19(TCP)m
19(options,)m
18(if)m
19(any)m
-1 r 46 c
37(If)m
18(any)m
19(of)m
19(these)m
19(things)m
18(ar)m
101 c
cmsy9.300 @sf 319 1785 p 3 c
t-ita.270 @sf 18(differ)m
(ent)s
18(between)m
19(the)m
18(pr)m
(evious)s
18 r 38 c
18(curr)m
(ent)s
18(datagram,)m
19(we)m
18(send)m
19(the)m
cmsy9.300 @sf 319 1831 p 3 c
t-ita.270 @sf 18(curr)m
(ent)s
18(datagram)m
19(`uncompr)m
-1(essed'.)m
cmsy9.300 @sf 37 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 300 1876 p (oth)s
19 r 61 c
18 r 40 c
t-bol.270 @sf (struct)s
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&\(\()s
t-bol.270 @sf (int)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
966 1883 p 19 2 ru
984 1876 p (ip\)[hlen];)s
300 1922 p (deltaS)s
19 r 61 c
18(hlen;)m
t-rom.180 @sf 1248(90)m
t-rom.270 @sf 300 1968 p (hlen)s
19(+=)m
18(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
551 1974 p 19 2 ru
569 1968 p (of)s
(f;)s
300 2013 p (hlen)s
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 61 c
17(2;)m
t-bol.270 @sf 300 2105 p (if)s
t-rom.270 @sf 19(\(\(\()m
t-bol.270 @sf 117 c
400 2111 p 19 2 ru
419 2105 p (short)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\)ip\)[0])s
19(!=)m
19(\(\()m
t-bol.270 @sf 117 c
755 2111 p 19 2 ru
774 2105 p (short)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1047 2111 p 19 2 ru
1066 2105 p (ip\)[0])s
cmsy9.300 @sf 18(jj)m
t-rom.270 @sf 375 2150 p (\(\()s
t-bol.270 @sf 117 c
421 2157 p 19 2 ru
440 2150 p (short)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\)ip\)[3])s
19(!=)m
19(\(\()m
t-bol.270 @sf 117 c
776 2157 p 19 2 ru
794 2150 p (short)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1068 2157 p 19 2 ru
1086 2150 p (ip\)[3])s
cmsy9.300 @sf 19(jj)m
t-rom.270 @sf 375 2196 p (\(\()s
t-bol.270 @sf 117 c
421 2203 p 19 2 ru
440 2196 p (short)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\)ip\)[4])s
19(!=)m
19(\(\()m
t-bol.270 @sf 117 c
776 2203 p 19 2 ru
794 2196 p (short)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1068 2203 p 19 2 ru
1086 2196 p (ip\)[4])s
cmsy9.300 @sf 19(jj)m
t-rom.270 @sf 375 2242 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
481 2248 p 19 2 ru
500 2242 p (of)s
102 c
18(!=)m
19(oth)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
739 2248 p 19 2 ru
758 2242 p (of)s
102 c
cmsy9.300 @sf 18(jj)m
t-rom.270 @sf 375 2287 p (\(deltaS)s
cmmi9.300 @sf 19 r 62 c
t-rom.270 @sf 18 r 53 c
19(&&)m
19(BCMP\(ip)m
19 r 43 c
18(1,)m
19(&cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1054 2294 p 19 2 ru
1073 2287 p (ip)s
19 r 43 c
18(1,)m
19(\(deltaS)m
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(5\))m
cmmi9.300 @sf 18 r 60 c
-14 r 60 c
t-rom.270 @sf 18(2\)\))m
cmsy9.300 @sf 19(jj)m
t-rom.270 @sf 375 2333 p (\(th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
494 2340 p 19 2 ru
512 2333 p (of)s
102 c
cmmi9.300 @sf 19 r 62 c
t-rom.270 @sf 18 r 53 c
19(&&)m
19(BCMP\(th)m
19 r 43 c
18(1,)m
19(oth)m
19 r 43 c
19(1,)m
18(\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
1261 2340 p 19 2 ru
1280 2333 p (of)s
102 c
cmsy9.300 @sf 18 r 0 c
t-rom.270 @sf 19(5\))m
cmmi9.300 @sf 18 r 60 c
-14 r 60 c
t-rom.270 @sf 18(2\)\)\))m
t-bol.270 @sf 450 2379 p (goto)s
t-rom.270 @sf 19(uncompressed;)m
t-rom.180 @sf 1000(100)m
cmmi9.300 @sf 300 2470 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Figur)m
-1 r 101 c
18(out)m
19(which)m
19(of)m
18(the)m
19(changing)m
19(\014elds)m
19(changed.)m
37(The)m
19 r 114 c
-1(eceiver)m
cmsy9.300 @sf 319 2516 p 3 c
t-ita.270 @sf 18(expects)m
19(changes)m
19(in)m
19(the)m
18(or)m
(der:)s
18(ur)m
-1(gent,)m
18(window)m
-2 r 44 c
18(ack,)m
19(seq.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 2561 p (if)s
t-rom.270 @sf 19(\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
460 2568 p 19 2 ru
479 2561 p (\015ags)s
19 r 38 c
19(TH)m
667 2568 p 19 2 ru
685 2561 p (URG\))s
cmsy9.300 @sf 19 r 102 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(33])m
@eop
restore
%%Page: 34 36
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
cmsy9.300 @sf
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
34 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.270 @sf 450 233 p (deltaS)s
19 r 61 c
18(ntohs\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
802 239 p 19 2 ru
821 233 p (urp\);)s
450 278 p (ENCODEZ\(deltaS\);)s
450 324 p (changes)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(NEW)m
725 331 p 19 2 ru
744 324 p (U;)s
cmsy9.300 @sf 300 370 p 103 c
t-bol.270 @sf 19(else)m
18(if)m
t-rom.270 @sf 19(\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
575 376 p 19 2 ru
594 370 p (urp)s
19(!=)m
19(oth)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
840 376 p 19 2 ru
859 370 p (urp\))s
cmmi9.300 @sf 450 415 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(ar)m
-1(gh!)m
18(URG)m
19(not)m
19(set)m
18(but)m
19(urp)m
19(changed)m
cmsy9.300 @sf 19(\000\000)m
t-ita.270 @sf 18 r 97 c
19(sensible)m
cmsy9.300 @sf 469 461 p 3 c
t-ita.270 @sf 18(implementation)m
19(should)m
19(never)m
19(do)m
18(this)m
19(but)m
19(RFC793)m
19(doesn')m
-3 r 116 c
t-rom.180 @sf 334 r 49 c
(10)s
cmsy9.300 @sf 469 507 p 3 c
t-ita.270 @sf 18(pr)m
(ohibit)s
18(the)m
19(change)m
18(so)m
19(we)m
19(have)m
19(to)m
18(deal)m
19(with)m
19(it.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 469 552 p (goto)s
t-rom.270 @sf 18(uncompressed;)m
t-bol.270 @sf 300 644 p (if)s
t-rom.270 @sf 19(\(deltaS)m
18 r 61 c
19 r 40 c
t-bol.270 @sf 117 c
540 650 p 19 2 ru
559 644 p (short)s
t-rom.270 @sf (\)\(ntohs\(th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
867 650 p 19 2 ru
886 644 p (win\))s
cmsy9.300 @sf 18 r 0 c
t-rom.270 @sf 19(ntohs\(oth)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
1240 650 p 19 2 ru
1259 644 p (win\)\)\))s
cmsy9.300 @sf 19 r 102 c
t-rom.270 @sf 450 689 p (ENCODE\(deltaS\);)s
450 735 p (changes)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(NEW)m
725 742 p 19 2 ru
744 735 p 87 c
59 c
cmsy9.300 @sf 300 781 p 103 c
t-bol.270 @sf 300 826 p (if)s
t-rom.270 @sf 19(\(deltaA)m
18 r 61 c
19(ntohl\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
709 833 p 19 2 ru
727 826 p (ack\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(ntohl\(oth)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
1074 833 p 19 2 ru
1093 826 p (ack\)\))s
cmsy9.300 @sf 18 r 102 c
t-bol.270 @sf 450 872 p (if)s
t-rom.270 @sf 19(\(deltaA)m
cmmi9.300 @sf 18 r 62 c
t-rom.270 @sf 19(0xf)m
102 c
102 c
-1(f\))m
t-bol.270 @sf 600 918 p (goto)s
t-rom.270 @sf 19(uncompressed;)m
t-rom.180 @sf 850(120)m
t-rom.270 @sf 450 963 p (ENCODE\(deltaA\);)s
450 1009 p (changes)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(NEW)m
725 1015 p 19 2 ru
744 1009 p (A;)s
cmsy9.300 @sf 300 1054 p 103 c
t-bol.270 @sf 300 1100 p (if)s
t-rom.270 @sf 19(\(deltaS)m
18 r 61 c
19(ntohl\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
702 1107 p 19 2 ru
721 1100 p (seq\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(ntohl\(oth)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
1066 1107 p 19 2 ru
1084 1100 p (seq\)\))s
cmsy9.300 @sf 19 r 102 c
t-bol.270 @sf 450 1146 p (if)s
t-rom.270 @sf 19(\(deltaS)m
cmmi9.300 @sf 18 r 62 c
t-rom.270 @sf 19(0xf)m
102 c
102 c
-1(f\))m
t-bol.270 @sf 600 1191 p (goto)s
t-rom.270 @sf 19(uncompressed;)m
450 1237 p (ENCODE\(deltaS\);)s
450 1283 p (changes)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(NEW)m
725 1289 p 19 2 ru
744 1283 p (S;)s
cmsy9.300 @sf 300 1328 p 103 c
t-rom.180 @sf 1762 1374 p (130)s
cmmi9.300 @sf 300 1420 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Look)m
18(for)m
19(the)m
19(special)m
cmsy9.300 @sf 0 c
t-ita.270 @sf (case)s
19(encodings.)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 1465 p (switch)s
t-rom.270 @sf (\(changes\))s
cmsy9.300 @sf 19 r 102 c
t-bol.270 @sf 300 1557 p (case)s
t-rom.270 @sf 19(0:)m
cmmi9.300 @sf 450 1602 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Nothing)m
18(changed.)m
19(If)m
19(this)m
19(packet)m
18(contains)m
19(data)m
19(and)m
19(the)m
cmsy9.300 @sf 469 1648 p 3 c
t-ita.270 @sf 18(last)m
19(one)m
19(didn')m
-3(t,)m
18(this)m
18(is)m
19(pr)m
(obably)s
17 r 97 c
19(data)m
19(packet)m
19(following)m
cmsy9.300 @sf 469 1694 p 3 c
t-ita.270 @sf 18(an)m
19(ack)m
19(\(normal)m
19(on)m
18(an)m
19(interactive)m
19(connection\))m
19(and)m
18(we)m
19(send)m
cmsy9.300 @sf 469 1739 p 3 c
t-ita.270 @sf 18(it)m
19(compr)m
(essed.)s
36(Otherwise)m
19(it')m
-4 r 115 c
18(pr)m
(obably)s
17 r 97 c
19 r 114 c
(etransmit,)s
cmsy9.300 @sf 469 1785 p 3 c
t-ita.270 @sf 18 r 114 c
(etransmitted)s
18(ack)m
19(or)m
18(window)m
19(pr)m
(obe.)s
36(Send)m
19(it)m
19(uncompr)m
-1(essed)m
cmsy9.300 @sf 469 1831 p 3 c
t-ita.270 @sf 18(in)m
19(case)m
19(the)m
19(other)m
18(side)m
19(missed)m
19(the)m
19(compr)m
-1(essed)m
18(version.)m
cmsy9.300 @sf 38 r 3 c
cmmi9.300 @sf 61 c
t-rom.180 @sf 305(140)m
t-bol.270 @sf 450 1876 p (if)s
t-rom.270 @sf 19(\(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
610 1883 p 19 2 ru
629 1876 p (len)s
19(!=)m
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
856 1883 p 19 2 ru
875 1876 p (ip.ip)s
943 1883 p 19 2 ru
962 1876 p (len)s
18(&&)m
19(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1307 1883 p 19 2 ru
1326 1876 p (ip.ip)s
1394 1883 p 19 2 ru
1413 1876 p (len\))s
18(==)m
19(hlen\))m
t-bol.270 @sf 600 1922 p (br)s
(eak)s
t-rom.270 @sf 59 c
cmmi9.300 @sf 450 2013 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(\(fall)m
18(thr)m
(ough\))s
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 2105 p (case)s
t-rom.270 @sf 19(SPECIAL)m
537 2111 p 19 2 ru
556 2105 p (I:)s
t-bol.270 @sf 300 2150 p (case)s
t-rom.270 @sf 19(SPECIAL)m
537 2157 p 19 2 ru
556 2150 p (D:)s
cmmi9.300 @sf 450 2196 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(actual)m
18(changes)m
19(match)m
19(one)m
19(of)m
18(our)m
19(special)m
19(case)m
19(encodings)m
cmsy9.300 @sf 18(\000\000)m
469 2242 p 3 c
t-ita.270 @sf 18(send)m
19(packet)m
19(uncompr)m
(essed.)s
cmsy9.300 @sf 36 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 450 2287 p (goto)s
t-rom.270 @sf 19(uncompressed;)m
t-rom.180 @sf 1000(150)m
t-bol.270 @sf 300 2379 p (case)s
t-rom.270 @sf 19(NEW)m
471 2385 p 19 2 ru
490 2379 p 83 c
cmsy9.300 @sf 106 c
t-rom.270 @sf (NEW)s
606 2385 p 19 2 ru
625 2379 p (A:)s
t-bol.270 @sf 450 2424 p (if)s
t-rom.270 @sf 19(\(deltaS)m
18(==)m
19(deltaA)m
19(&&)m
19(deltaS)m
18(==)m
19(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1251 2431 p 19 2 ru
1270 2424 p (ip.ip)s
1338 2431 p 19 2 ru
1356 2424 p (len\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(hlen\))m
cmsy9.300 @sf 19 r 102 c
cmmi9.300 @sf 600 2470 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(special)m
18(case)m
19(for)m
19(echoed)m
19(terminal)m
18(traf\014c)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 600 2516 p (changes)s
19 r 61 c
18(SPECIAL)m
932 2522 p 19 2 ru
950 2516 p (I;)s
600 2561 p (cp)s
19 r 61 c
18(new)m
757 2568 p 19 2 ru
775 2561 p (seq;)s
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(34])m
@eop
restore
%%Page: 35 37
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
cmsy9.300 @sf
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
35 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
cmsy9.300 @sf 450 233 p 103 c
t-bol.270 @sf 450 278 p (br)s
(eak)s
t-rom.270 @sf 59 c
t-bol.270 @sf 300 370 p (case)s
t-rom.270 @sf 19(NEW)m
471 376 p 19 2 ru
490 370 p (S:)s
t-rom.180 @sf 1241(160)m
t-bol.270 @sf 450 415 p (if)s
t-rom.270 @sf 19(\(deltaS)m
18(==)m
19(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
882 422 p 19 2 ru
901 415 p (ip.ip)s
968 422 p 19 2 ru
987 415 p (len\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(hlen\))m
cmsy9.300 @sf 18 r 102 c
cmmi9.300 @sf 600 461 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(special)m
18(case)m
19(for)m
19(data)m
19(xfer)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 600 507 p (changes)s
19 r 61 c
18(SPECIAL)m
932 513 p 19 2 ru
950 507 p (D;)s
600 552 p (cp)s
19 r 61 c
18(new)m
757 559 p 19 2 ru
775 552 p (seq;)s
cmsy9.300 @sf 450 598 p 103 c
t-bol.270 @sf 450 644 p (br)s
(eak)s
t-rom.270 @sf 59 c
cmsy9.300 @sf 300 689 p 103 c
t-rom.270 @sf 300 735 p (deltaS)s
19 r 61 c
18(ntohs\(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (ip)s
652 742 p 19 2 ru
671 735 p (id\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
984 742 p 19 2 ru
1003 735 p (ip.ip)s
1071 742 p 19 2 ru
1089 735 p (id\);)s
t-bol.270 @sf 300 781 p (if)s
t-rom.270 @sf 19(\(deltaS)m
18(!=)m
19(1\))m
cmsy9.300 @sf 19 r 102 c
t-rom.270 @sf 450 826 p (ENCODEZ\(deltaS\);)s
t-rom.180 @sf 1008(170)m
t-rom.270 @sf 450 872 p (changes)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(NEW)m
725 878 p 19 2 ru
744 872 p (I;)s
cmsy9.300 @sf 300 918 p 103 c
t-bol.270 @sf 300 963 p (if)s
t-rom.270 @sf 19(\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
460 970 p 19 2 ru
479 963 p (\015ags)s
19 r 38 c
19(TH)m
667 970 p 19 2 ru
685 963 p (PUSH\))s
450 1009 p (changes)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(TCP)m
709 1015 p 19 2 ru
728 1009 p (PUSH)s
823 1015 p 19 2 ru
842 1009 p (BIT)s
-1 r 59 c
cmmi9.300 @sf 300 1054 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Grab)m
18(the)m
19(cksum)m
19(befor)m
101 c
17(we)m
19(overwrite)m
19(it)m
19(below)m
-2 r 46 c
36(Then)m
19(update)m
19(our)m
cmsy9.300 @sf 319 1100 p 3 c
t-ita.270 @sf 18(state)m
19(with)m
19(this)m
19(packet')m
-4 r 115 c
18(header)m
-4 r 46 c
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 300 1146 p (deltaA)s
19 r 61 c
18(ntohs\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
659 1152 p 19 2 ru
677 1146 p (sum\);)s
300 1191 p (BCOPY\(ip,)s
19(&cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
634 1198 p 19 2 ru
653 1191 p (ip,)s
19(hlen\);)m
cmmi9.300 @sf 300 1283 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19 r 87 c
-3 r 101 c
18(want)m
19(to)m
19(use)m
18(the)m
19(original)m
19(packet)m
19(as)m
18(our)m
19(compr)m
(essed)s
17(packet.)m
t-rom.180 @sf 389(180)m
cmsy9.300 @sf 319 1328 p 3 c
t-ita.270 @sf 18(\(cp)m
cmsy9.300 @sf 19 r 0 c
t-ita.270 @sf 19(new)m
532 1335 p 19 2 ru
551 1328 p (seq\))s
19(is)m
19(the)m
18(number)m
19(of)m
19(bytes)m
19(we)m
18(need)m
19(for)m
19(compr)m
-1(essed)m
cmsy9.300 @sf 319 1374 p 3 c
t-ita.270 @sf 18(sequence)m
19(numbers.)m
38(In)m
18(addition)m
19(we)m
19(need)m
19(one)m
18(byte)m
19(for)m
19(the)m
19(change)m
cmsy9.300 @sf 319 1420 p 3 c
t-ita.270 @sf 18(mask,)m
19(one)m
19(for)m
19(the)m
18(connection)m
19(id)m
19(and)m
19(two)m
18(for)m
19(the)m
19(tcp)m
19(checksum.)m
cmsy9.300 @sf 319 1465 p 3 c
t-ita.270 @sf 18(So,)m
19(\(cp)m
cmsy9.300 @sf 19 r 0 c
t-ita.270 @sf 19(new)m
598 1472 p 19 2 ru
617 1465 p (seq\))s
18 r 43 c
19 r 52 c
19(bytes)m
19(of)m
18(header)m
19(ar)m
101 c
18(needed.)m
37(hlen)m
19(is)m
19(how)m
cmsy9.300 @sf 319 1511 p 3 c
t-ita.270 @sf 18(many)m
19(bytes)m
19(of)m
19(the)m
18(original)m
19(packet)m
19(to)m
19(toss)m
18(so)m
19(subtract)m
19(the)m
19(two)m
18(to)m
cmsy9.300 @sf 319 1557 p 3 c
t-ita.270 @sf 18(get)m
19(the)m
19(new)m
19(packet)m
18(size.)m
cmsy9.300 @sf 38 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 300 1602 p (deltaS)s
19 r 61 c
18(cp)m
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(new)m
618 1609 p 19 2 ru
636 1602 p (seq;)s
300 1648 p (cp)s
19 r 61 c
18 r 40 c
t-bol.270 @sf 117 c
427 1655 p 19 2 ru
446 1648 p (char)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)ip;)s
t-bol.270 @sf 300 1694 p (if)s
t-rom.270 @sf 19(\(compress)m
496 1700 p 19 2 ru
515 1694 p (cid)s
18(==)m
19 r 48 c
cmsy9.300 @sf 19(jj)m
t-rom.270 @sf 19(comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
901 1700 p 19 2 ru
920 1694 p (xmit)s
19(!=)m
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1170 1700 p 19 2 ru
1189 1694 p (id\))s
cmsy9.300 @sf 19 r 102 c
t-rom.270 @sf 450 1739 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
633 1746 p 19 2 ru
652 1739 p (xmit)s
19 r 61 c
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
890 1746 p 19 2 ru
909 1739 p (id;)s
t-rom.180 @sf 814(190)m
t-rom.270 @sf 450 1785 p (hlen)s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 61 c
18(deltaS)m
19 r 43 c
19(4;)m
450 1831 p (cp)s
19(+=)m
18(hlen;)m
cmsy9.300 @sf 450 1876 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(changes)m
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 19(NEW)m
860 1883 p 19 2 ru
879 1876 p (C;)s
cmsy9.300 @sf 450 1922 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (cs)s
716 1929 p 19 2 ru
735 1922 p (id;)s
cmsy9.300 @sf 300 1968 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
t-rom.270 @sf 450 2013 p (hlen)s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 61 c
18(deltaS)m
19 r 43 c
19(3;)m
450 2059 p (cp)s
19(+=)m
18(hlen;)m
cmsy9.300 @sf 450 2105 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(changes;)m
cmsy9.300 @sf 300 2150 p 103 c
t-rom.270 @sf 300 2196 p 109 c
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf 109 c
406 2203 p 19 2 ru
425 2196 p (len)s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 61 c
18(hlen;)m
t-rom.180 @sf 1129(200)m
t-rom.270 @sf 300 2242 p 109 c
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf 109 c
406 2248 p 19 2 ru
425 2242 p (of)s
102 c
18(+=)m
19(hlen;)m
cmsy9.300 @sf 300 2287 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(deltaA)m
cmmi9.300 @sf 19 r 62 c
-14 r 62 c
t-rom.270 @sf 18(8;)m
cmsy9.300 @sf 300 2333 p 3 c
t-rom.270 @sf (cp++)s
19 r 61 c
18(deltaA;)m
300 2379 p (BCOPY\(new)s
500 2385 p 19 2 ru
519 2379 p (seq,)s
18(cp,)m
19(deltaS\);)m
t-bol.270 @sf 300 2424 p 114 c
(eturn)s
t-rom.270 @sf 18(\(TYPE)m
528 2431 p 19 2 ru
547 2424 p (COMPRESSED)s
793 2431 p 19 2 ru
812 2424 p (TCP\);)s
cmmi9.300 @sf 300 2516 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Update)m
18(connection)m
19(state)m
19(cs)m
19 r 38 c
18(send)m
19(uncompr)m
(essed)s
18(packet)m
18(\('uncompr)m
(essed')s
cmsy9.300 @sf 319 2561 p 3 c
t-ita.270 @sf 18(means)m
19 r 97 c
19 r 114 c
(egular)s
17(ip)m
cmmi9.300 @sf 61 c
t-ita.270 @sf (tcp)s
19(packet)m
19(but)m
19(with)m
18(the)m
19('conversation)m
19(id')m
19(we)m
18(hope)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(35])m
@eop
restore
%%Page: 36 38
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
cmsy9.300 @sf
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
36 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
cmsy9.300 @sf 319 233 p 3 c
t-ita.270 @sf 18(to)m
19(use)m
19(on)m
19(futur)m
-1 r 101 c
18(compr)m
(essed)s
17(packets)m
19(in)m
19(the)m
19(pr)m
-1(otocol)m
18(\014eld\).)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 150 278 p (uncompressed:)s
t-rom.180 @sf 1388(210)m
t-rom.270 @sf 300 324 p (BCOPY\(ip,)s
19(&cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
634 331 p 19 2 ru
653 324 p (ip,)s
19(hlen\);)m
300 370 p (ip)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
406 376 p 19 2 ru
425 370 p 112 c
19 r 61 c
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (cs)s
613 376 p 19 2 ru
631 370 p (id;)s
300 415 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
483 422 p 19 2 ru
502 415 p (xmit)s
19 r 61 c
19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
740 422 p 19 2 ru
759 415 p (id;)s
t-bol.270 @sf 300 461 p 114 c
(eturn)s
t-rom.270 @sf 18(\(TYPE)m
528 468 p 19 2 ru
547 461 p (UNCOMPRESSED)s
847 468 p 19 2 ru
866 461 p (TCP\);)s
cmsy9.300 @sf 150 507 p 103 c
t-bol.360 @sf 150 680 p (A.3)s
50(Decompr)m
(ession)s
t-rom.330 @sf 150 771 p (This)s
17(routine)m
17(decompresses)m
17 r 97 c
17(received)m
17(packet.)m
34(It)m
17(is)m
17(called)m
17(with)m
17 r 97 c
17(pointer)m
17(to)m
17(the)m
17(packet,)m
150 828 p (the)s
17(packet)m
17(length)m
17(and)m
18(type,)m
18(and)m
17 r 97 c
17(pointer)m
18(to)m
17(the)m
17(compression)m
17(state)m
17(structure)m
17(for)m
18(the)m
17(in-)m
150 884 p (coming)s
13(serial)m
14(line.)m
23(It)m
13(returns)m
13 r 97 c
14(pointer)m
13(to)m
13(the)m
14(resulting)m
13(packet)m
13(or)m
14(zero)m
13(if)m
13(there)m
14(were)m
13(errors)m
150 940 p (in)s
15(the)m
16(incoming)m
15(packet.)m
30(If)m
15(the)m
16(packet)m
15(is)m
t-romsc.330 @sf 16(compressed)m
1164 947 p 23 2 ru
1190 940 p (tcp)s
t-rom.330 @sf 15(or)m
t-romsc.330 @sf 16(uncompressed)m
1623 947 p 23 2 ru
1649 940 p (tcp)s
t-rom.330 @sf 44 c
16(the)m
150 997 p (compression)s
11(state)m
12(will)m
11(be)m
12(updated.)m
221 1057 p (The)s
11(new)m
11(packet)m
11(will)m
11(be)m
11(constructed)m
11(in-place.)m
17(That)m
11(means)m
12(that)m
11(there)m
14(must)m
1466 1065 p 90 2 ru
1569 1057 p (be)s
11(128)m
11(bytes)m
150 1114 p (of)s
11(free)m
10(space)m
11(in)m
11(front)m
10(of)m
11(bufp)m
11(to)m
10(allow)m
11(room)m
11(for)m
10(the)m
11(reconstructed)m
11(IP)m
10(and)m
11(TCP)m
11(headers.)m
17(The)m
150 1170 p (reconstructed)s
11(packet)m
12(will)m
11(be)m
12(aligned)m
11(on)m
12 r 97 c
11(32-bit)m
12(boundary)m
-2 r 46 c
t-bol.270 @sf 150 1238 p 117 c
171 1245 p 19 2 ru
190 1238 p (char)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf 150 1284 p (sl)s
175 1290 p 19 2 ru
194 1284 p (uncompress)s
373 1290 p 19 2 ru
392 1284 p (tcp\(bufp,)s
18(len,)m
19(type,)m
19(comp\))m
t-bol.270 @sf 300 1329 p 117 c
321 1336 p 19 2 ru
340 1329 p (char)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (bufp;)s
t-bol.270 @sf 300 1375 p (int)s
t-rom.270 @sf 19(len;)m
t-bol.270 @sf 300 1421 p 117 c
321 1427 p 19 2 ru
340 1421 p (int)s
t-rom.270 @sf 18(type;)m
t-bol.270 @sf 300 1466 p (struct)s
t-rom.270 @sf 19(slcompress)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (comp;)s
cmsy9.300 @sf 150 1512 p 102 c
t-bol.270 @sf 300 1558 p 114 c
(egister)s
18 r 117 c
462 1564 p 19 2 ru
481 1558 p (char)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (cp;)s
t-bol.270 @sf 300 1603 p 114 c
(egister)s
18 r 117 c
462 1610 p 19 2 ru
481 1603 p (int)s
t-rom.270 @sf 18(hlen,)m
19(changes;)m
t-bol.270 @sf 300 1649 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (th;)s
t-rom.180 @sf 1048(10)m
t-bol.270 @sf 300 1695 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (cs;)s
t-bol.270 @sf 300 1740 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(ip)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (ip;)s
t-bol.270 @sf 300 1832 p (switch)s
t-rom.270 @sf 19(\(type\))m
cmsy9.300 @sf 18 r 102 c
t-bol.270 @sf 300 1923 p (case)s
t-rom.270 @sf 19(TYPE)m
479 1930 p 19 2 ru
498 1923 p (ERROR:)s
t-bol.270 @sf 300 1969 p (default)s
t-rom.270 @sf 58 c
t-bol.270 @sf 450 2014 p (goto)s
t-rom.270 @sf 19(bad;)m
t-bol.270 @sf 300 2106 p (case)s
t-rom.270 @sf 19(TYPE)m
479 2112 p 19 2 ru
498 2106 p (IP:)s
t-rom.180 @sf 1233(20)m
t-bol.270 @sf 450 2151 p 114 c
(eturn)s
t-rom.270 @sf 18(\(bufp\);)m
t-bol.270 @sf 300 2243 p (case)s
t-rom.270 @sf 19(TYPE)m
479 2249 p 19 2 ru
498 2243 p (UNCOMPRESSED)s
798 2249 p 19 2 ru
817 2243 p (TCP:)s
cmmi9.300 @sf 450 2288 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Locate)m
18(the)m
19(saved)m
19(state)m
19(for)m
18(this)m
19(connection.)m
38(If)m
18(the)m
cmsy9.300 @sf 469 2334 p 3 c
t-ita.270 @sf 18(state)m
19(index)m
19(is)m
19(legal,)m
18(clear)m
19(the)m
19('discar)m
(d')s
17(\015ag.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 450 2379 p (ip)s
19 r 61 c
18 r 40 c
t-bol.270 @sf (struct)s
t-rom.270 @sf 19(ip)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf 41 c
19(bufp;)m
t-bol.270 @sf 450 2425 p (if)s
t-rom.270 @sf 19(\(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
610 2432 p 19 2 ru
629 2425 p 112 c
cmmi9.300 @sf 19 r 62 c
t-rom.270 @sf 61 c
19(MAX)m
824 2432 p 19 2 ru
843 2425 p (ST)s
-2 r 65 c
-5(TES\))m
t-bol.270 @sf 600 2471 p (goto)s
t-rom.270 @sf 19(bad;)m
450 2562 p (cs)s
19 r 61 c
18(&comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (rstate[comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -12 r 62 c
t-rom.270 @sf (last)s
977 2569 p 19 2 ru
996 2562 p (recv)s
19 r 61 c
19(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
1225 2569 p 19 2 ru
1244 2562 p (p];)s
t-rom.180 @sf 489(30)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(36])m
@eop
restore
%%Page: 37 39
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
cmsy9.300 @sf
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
37 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.270 @sf 450 233 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (\015ags)s
18(&=~)m
19(SLF)m
817 239 p 19 2 ru
836 233 p 84 c
(OSS;)s
cmmi9.300 @sf 450 278 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Restor)m
-1 r 101 c
18(the)m
19(IP)m
19(pr)m
-1(otocol)m
18(\014eld)m
19(then)m
18(save)m
19 r 97 c
19(copy)m
19(of)m
18(this)m
19(packet)m
cmsy9.300 @sf 469 324 p 3 c
t-ita.270 @sf 18(header)m
-3 r 46 c
37(\(The)m
19(checksum)m
18(is)m
19(zer)m
(oed)s
17(in)m
19(the)m
19(copy)m
19(so)m
18(we)m
19(don')m
-3 r 116 c
cmsy9.300 @sf 469 370 p 3 c
t-ita.270 @sf 18(have)m
19(to)m
19(zer)m
111 c
17(it)m
19(each)m
19(time)m
19(we)m
18(pr)m
(ocess)s
18 r 97 c
18(compr)m
(essed)s
18(packet.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 450 415 p (ip)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (ip)s
556 422 p 19 2 ru
575 415 p 112 c
19 r 61 c
18(IPPROT)m
79 c
808 422 p 19 2 ru
827 415 p (TCP;)s
450 461 p (hlen)s
19 r 61 c
18(ip)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (ip)s
679 468 p 19 2 ru
698 461 p (hl;)s
450 507 p (hlen)s
19(+=)m
18(\(\()m
t-bol.270 @sf (struct)s
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&\(\()s
t-bol.270 @sf (int)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)ip\)[hlen]\))s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
1247 513 p 19 2 ru
1266 507 p (of)s
(f;)s
450 552 p (hlen)s
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 61 c
17(2;)m
450 598 p (BCOPY\(ip,)s
19(&cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
784 605 p 19 2 ru
803 598 p (ip,)s
19(hlen\);)m
450 644 p (cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
560 650 p 19 2 ru
579 644 p (ip.ip)s
647 650 p 19 2 ru
666 644 p (sum)s
18 r 61 c
19(0;)m
t-rom.180 @sf 959(40)m
t-rom.270 @sf 450 689 p (cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
560 696 p 19 2 ru
579 689 p (hlen)s
19 r 61 c
19(hlen;)m
t-bol.270 @sf 450 735 p 114 c
(eturn)s
t-rom.270 @sf 18(\(bufp\);)m
t-bol.270 @sf 300 826 p (case)s
t-rom.270 @sf 19(TYPE)m
479 833 p 19 2 ru
498 826 p (COMPRESSED)s
744 833 p 19 2 ru
763 826 p (TCP:)s
t-bol.270 @sf 450 872 p (br)s
(eak)s
t-rom.270 @sf 59 c
cmsy9.300 @sf 300 918 p 103 c
cmmi9.300 @sf 300 963 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19 r 87 c
-3(e've)m
18(got)m
19 r 97 c
19(compr)m
-1(essed)m
18(packet.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 300 1009 p (cp)s
19 r 61 c
18(bufp;)m
300 1054 p (changes)s
19 r 61 c
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (cp++;)s
t-bol.270 @sf 300 1100 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(NEW)m
627 1107 p 19 2 ru
646 1100 p (C\))s
cmsy9.300 @sf 18 r 102 c
t-rom.180 @sf 1054(50)m
cmmi9.300 @sf 450 1146 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Make)m
18(sur)m
101 c
18(the)m
19(state)m
18(index)m
19(is)m
19(in)m
19(range,)m
18(then)m
19(grab)m
19(the)m
19(state.)m
cmsy9.300 @sf 469 1191 p 3 c
t-ita.270 @sf 18(If)m
19(we)m
19(have)m
19 r 97 c
18(good)m
19(state)m
19(index,)m
19(clear)m
18(the)m
19('discar)m
(d')s
18(\015ag.)m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 450 1237 p (if)s
t-rom.270 @sf 19 r 40 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp)s
cmmi9.300 @sf 18 r 62 c
t-rom.270 @sf 61 c
19(MAX)m
735 1244 p 19 2 ru
753 1237 p (ST)s
-2 r 65 c
-4(TES\))m
t-bol.270 @sf 600 1283 p (goto)s
t-rom.270 @sf 19(bad;)m
450 1374 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (\015ags)s
18(&=~)m
19(SLF)m
817 1381 p 19 2 ru
836 1374 p 84 c
(OSS;)s
450 1420 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
633 1426 p 19 2 ru
652 1420 p (recv)s
19 r 61 c
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (cp++;)s
cmsy9.300 @sf 300 1465 p 103 c
t-bol.270 @sf 19(else)m
cmsy9.300 @sf 18 r 102 c
cmmi9.300 @sf 450 1511 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(This)m
18(packet)m
19(has)m
19(an)m
19(implicit)m
18(state)m
19(index.)m
38(If)m
18(we've)m
cmsy9.300 @sf 469 1557 p 3 c
t-ita.270 @sf 18(had)m
19 r 97 c
19(line)m
19(err)m
-1(or)m
18(since)m
19(the)m
19(last)m
18(time)m
19(we)m
19(got)m
19(an)m
t-rom.180 @sf 503(60)m
cmsy9.300 @sf 469 1602 p 3 c
t-ita.270 @sf 18(explicit)m
19(state)m
19(index,)m
19(we)m
18(have)m
19(to)m
19(toss)m
19(the)m
18(packet.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 450 1648 p (if)s
t-rom.270 @sf 19(\(comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (\015ags)s
18 r 38 c
18(SLF)m
837 1655 p 19 2 ru
856 1648 p 84 c
(OSS\))s
t-bol.270 @sf 600 1694 p 114 c
(eturn)s
t-rom.270 @sf 18(\(\()m
t-bol.270 @sf 117 c
768 1700 p 19 2 ru
787 1694 p (char)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)0\);)s
cmsy9.300 @sf 300 1739 p 103 c
cmmi9.300 @sf 300 1785 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Find)m
18(the)m
19(state)m
19(then)m
19(\014ll)m
18(in)m
19(the)m
19(TCP)m
19(checksum)m
18(and)m
19(PUSH)m
19(bit.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 300 1831 p (cs)s
19 r 61 c
18(&comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (rstate[comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -12 r 62 c
t-rom.270 @sf (last)s
827 1837 p 19 2 ru
846 1831 p (recv];)s
300 1876 p (hlen)s
19 r 61 c
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (cs)s
534 1883 p 19 2 ru
552 1876 p (ip.ip)s
620 1883 p 19 2 ru
639 1876 p (hl)s
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 17(2;)m
300 1922 p (th)s
19 r 61 c
18 r 40 c
t-bol.270 @sf (struct)s
t-rom.270 @sf 19(tcphdr)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&\(\()s
t-bol.270 @sf 117 c
734 1929 p 19 2 ru
753 1922 p (char)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1016 1929 p 19 2 ru
1034 1922 p (ip\)[hlen];)s
300 1968 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
406 1974 p 19 2 ru
425 1968 p (sum)s
19 r 61 c
18(htons\(\()m
cmsy9.300 @sf 3 c
t-rom.270 @sf (cp)s
cmmi9.300 @sf 19 r 60 c
-14 r 60 c
t-rom.270 @sf 18(8\))m
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 18(cp[1]\);)m
300 2013 p (cp)s
19(+=)m
18(2;)m
t-rom.180 @sf 1331(70)m
t-bol.270 @sf 300 2059 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(TCP)m
610 2066 p 19 2 ru
629 2059 p (PUSH)s
725 2066 p 19 2 ru
744 2059 p (BIT\))s
450 2105 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
556 2111 p 19 2 ru
575 2105 p (\015ags)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(TH)m
765 2111 p 19 2 ru
784 2105 p (PUSH;)s
t-bol.270 @sf 300 2150 p (else)s
t-rom.270 @sf 450 2196 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
556 2203 p 19 2 ru
575 2196 p (\015ags)s
19(&=~)m
18(TH)m
796 2203 p 19 2 ru
815 2196 p (PUSH;)s
cmmi9.300 @sf 300 2287 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Fix)m
18(up)m
19(the)m
19(state')m
-4 r 115 c
18(ack,)m
19(seq,)m
18(ur)m
103 c
18(and)m
19(win)m
18(\014elds)m
19(based)m
19(on)m
19(the)m
18(changemask.)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 2333 p (switch)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(SPECIALS)m
794 2340 p 19 2 ru
812 2333 p (MASK\))s
cmsy9.300 @sf 19 r 102 c
t-bol.270 @sf 300 2379 p (case)s
t-rom.270 @sf 19(SPECIAL)m
537 2385 p 19 2 ru
556 2379 p (I:)s
cmsy9.300 @sf 450 2424 p 102 c
t-bol.270 @sf 450 2470 p 114 c
(egister)s
18 r 117 c
612 2477 p 19 2 ru
631 2470 p (int)s
t-rom.270 @sf 18 r 105 c
19 r 61 c
19(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
966 2477 p 19 2 ru
985 2470 p (ip.ip)s
1053 2477 p 19 2 ru
1071 2470 p (len\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1307 2477 p 19 2 ru
1326 2470 p (hlen;)s
t-rom.180 @sf 374(80)m
t-rom.270 @sf 450 2516 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
556 2522 p 19 2 ru
575 2516 p (ack)s
19 r 61 c
18(htonl\(ntohl\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
971 2522 p 19 2 ru
990 2516 p (ack\))s
19 r 43 c
18(i\);)m
450 2561 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
556 2568 p 19 2 ru
575 2561 p (seq)s
19 r 61 c
18(htonl\(ntohl\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
969 2568 p 19 2 ru
988 2561 p (seq\))s
19 r 43 c
18(i\);)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(37])m
@eop
restore
%%Page: 38 40
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
cmsy9.300 @sf
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
cmmi9.300 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
800180018001C000C000C000E000600060007000300030003800180018001C000C000C> 16 37 -2 9 19.198] 61 @dc
cmsy9.300 @sf
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
cmmi9.300 @sf
[<00000E00003C0000F00003C0000F00003C0000F00003C0000F00003C0000F00000F000003C0000
0F000003C00000F000003C00000F000003C00000F000003C00000E> 24 22 -3 2 29.864] 60 @dc
38 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
cmsy9.300 @sf 450 233 p 103 c
t-bol.270 @sf 450 278 p (br)s
(eak)s
t-rom.270 @sf 59 c
t-bol.270 @sf 300 370 p (case)s
t-rom.270 @sf 19(SPECIAL)m
537 376 p 19 2 ru
556 370 p (D:)s
450 415 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
556 422 p 19 2 ru
575 415 p (seq)s
19 r 61 c
18(htonl\(ntohl\(th)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (th)s
969 422 p 19 2 ru
988 415 p (seq\))s
19 r 43 c
18(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1313 422 p 19 2 ru
1332 415 p (ip.ip)s
1399 422 p 19 2 ru
1418 415 p (len\))s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1654 422 p 19 2 ru
1673 415 p (hlen\);)s
t-bol.270 @sf 450 461 p (br)s
(eak)s
t-rom.270 @sf 59 c
t-bol.270 @sf 300 552 p (default)s
t-rom.270 @sf 58 c
t-rom.180 @sf 1352(90)m
t-bol.270 @sf 450 598 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(NEW)m
777 605 p 19 2 ru
796 598 p (U\))s
cmsy9.300 @sf 18 r 102 c
t-rom.270 @sf 600 644 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
706 650 p 19 2 ru
725 644 p (\015ags)s
cmsy9.300 @sf 19 r 106 c
t-rom.270 @sf 61 c
18(TH)m
915 650 p 19 2 ru
934 644 p (URG;)s
600 689 p (DECODEU\(th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
898 696 p 19 2 ru
917 689 p (urp\))s
cmsy9.300 @sf 450 735 p 103 c
t-bol.270 @sf 19(else)m
t-rom.270 @sf 600 781 p (th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
706 787 p 19 2 ru
725 781 p (\015ags)s
19(&=~)m
18(TH)m
946 787 p 19 2 ru
965 781 p (URG;)s
t-bol.270 @sf 450 826 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(NEW)m
777 833 p 19 2 ru
796 826 p (W\))s
600 872 p (DECODES\(th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
892 878 p 19 2 ru
910 872 p (win\))s
t-bol.270 @sf 450 918 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(NEW)m
777 924 p 19 2 ru
796 918 p (A\))s
600 963 p (DECODEL\(th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
894 970 p 19 2 ru
912 963 p (ack\))s
t-bol.270 @sf 450 1009 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(NEW)m
777 1015 p 19 2 ru
796 1009 p (S\))s
t-rom.180 @sf 933(100)m
t-rom.270 @sf 600 1054 p (DECODEL\(th)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (th)s
894 1061 p 19 2 ru
912 1054 p (seq\))s
t-bol.270 @sf 450 1100 p (br)s
(eak)s
t-rom.270 @sf 59 c
cmsy9.300 @sf 300 1146 p 103 c
cmmi9.300 @sf 300 1191 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(Update)m
18(the)m
19(IP)m
19(ID)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 300 1237 p (if)s
t-rom.270 @sf 19(\(changes)m
18 r 38 c
19(NEW)m
627 1244 p 19 2 ru
646 1237 p (I\))s
450 1283 p (DECODES\(cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
746 1289 p 19 2 ru
765 1283 p (ip.ip)s
832 1289 p 19 2 ru
851 1283 p (id\))s
t-bol.270 @sf 300 1328 p (else)s
t-rom.270 @sf 450 1374 p (cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
560 1381 p 19 2 ru
579 1374 p (ip.ip)s
647 1381 p 19 2 ru
666 1374 p (id)s
18 r 61 c
19(htons\(ntohs\(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
1051 1381 p 19 2 ru
1070 1374 p (ip.ip)s
1138 1381 p 19 2 ru
1156 1374 p (id\))s
19 r 43 c
19(1\);)m
cmmi9.300 @sf 300 1465 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(At)m
18(this)m
19(point,)m
19(cp)m
19(points)m
18(to)m
19(the)m
19(\014rst)m
19(byte)m
18(of)m
19(data)m
19(in)m
19(the)m
t-rom.180 @sf 513 r 49 c
(10)s
cmsy9.300 @sf 319 1511 p 3 c
t-ita.270 @sf 18(packet.)m
38(If)m
19(we'r)m
-1 r 101 c
18(not)m
19(aligned)m
19(on)m
18 r 97 c
19 r 52 c
cmsy9.300 @sf 0 c
t-ita.270 @sf (byte)s
19(boundary)m
-1 r 44 c
18(copy)m
18(the)m
cmsy9.300 @sf 319 1557 p 3 c
t-ita.270 @sf 18(data)m
19(down)m
19(so)m
19(the)m
18(IP)m
19 r 38 c
19(TCP)m
19(headers)m
18(will)m
19(be)m
19(aligned.)m
37(Then)m
19(back)m
19(up)m
cmsy9.300 @sf 319 1602 p 3 c
t-ita.270 @sf 18(cp)m
19(by)m
19(the)m
19(TCP)m
cmmi9.300 @sf 61 c
t-ita.270 @sf (IP)s
18(header)m
19(length)m
19(to)m
19(make)m
18 r 114 c
(oom)s
18(for)m
19(the)m
18 r 114 c
(econstructed)s
cmsy9.300 @sf 319 1648 p 3 c
t-ita.270 @sf 18(header)m
19(\(we)m
19(assume)m
19(the)m
18(packet)m
19(we)m
19(wer)m
101 c
17(handed)m
19(has)m
19(enough)m
19(space)m
18(to)m
cmsy9.300 @sf 319 1694 p 3 c
t-ita.270 @sf 18(pr)m
(epend)s
18(128)m
19(bytes)m
18(of)m
19(header\).)m
38(Adjust)m
18(the)m
19(lenth)m
19(to)m
19(account)m
18(for)m
cmsy9.300 @sf 319 1739 p 3 c
t-ita.270 @sf 18(the)m
19(new)m
19(header)m
19 r 38 c
18(\014ll)m
19(in)m
19(the)m
19(IP)m
18(total)m
19(length.)m
cmsy9.300 @sf 319 1785 p 3 c
cmmi9.300 @sf 61 c
t-rom.270 @sf 300 1831 p (len)s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 61 c
18(\(cp)m
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(bufp\);)m
t-bol.270 @sf 300 1876 p (if)s
t-rom.270 @sf 19(\(len)m
cmmi9.300 @sf 18 r 60 c
t-rom.270 @sf 19(0\))m
cmmi9.300 @sf 450 1922 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19(we)m
18(must)m
19(have)m
19(dr)m
(opped)s
17(some)m
19(characters)m
19(\(cr)m
-1 r 99 c
18(should)m
19(detect)m
t-rom.180 @sf 312(120)m
cmsy9.300 @sf 469 1968 p 3 c
t-ita.270 @sf 18(this)m
19(but)m
19(the)m
19(old)m
18(slip)m
19(framing)m
19(won')m
-3(t\))m
cmsy9.300 @sf 18 r 3 c
cmmi9.300 @sf 61 c
t-bol.270 @sf 450 2013 p (goto)s
t-rom.270 @sf 19(bad;)m
t-bol.270 @sf 300 2105 p (if)s
t-rom.270 @sf 19(\(\()m
t-bol.270 @sf (int)s
t-rom.270 @sf (\)cp)s
18 r 38 c
19(3\))m
cmsy9.300 @sf 19 r 102 c
t-bol.270 @sf 450 2150 p (if)s
t-rom.270 @sf 19(\(len)m
cmmi9.300 @sf 18 r 62 c
t-rom.270 @sf 19(0\))m
600 2196 p (OVBCOPY\(cp,)s
19 r 40 c
t-bol.270 @sf (int)s
t-rom.270 @sf (\)cp)s
18(&~)m
19(3,)m
19(len\);)m
450 2242 p (cp)s
19 r 61 c
18 r 40 c
t-bol.270 @sf 117 c
577 2248 p 19 2 ru
596 2242 p (char)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)\(\()s
t-bol.270 @sf (int)s
t-rom.270 @sf (\)cp)s
19(&~)m
18(3\);)m
cmsy9.300 @sf 300 2287 p 103 c
t-rom.270 @sf 300 2333 p (cp)s
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 61 c
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (cs)s
534 2340 p 19 2 ru
553 2333 p (hlen;)s
300 2379 p (len)s
19(+=)m
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (cs)s
536 2385 p 19 2 ru
555 2379 p (hlen;)s
t-rom.180 @sf 1132(130)m
t-rom.270 @sf 300 2424 p (cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
410 2431 p 19 2 ru
429 2424 p (ip.ip)s
497 2431 p 19 2 ru
516 2424 p (len)s
18 r 61 c
19(htons\(len\);)m
300 2470 p (BCOPY\(&cs)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
577 2477 p 19 2 ru
596 2470 p (ip,)s
19(cp,)m
18(cs)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (cs)s
827 2477 p 19 2 ru
846 2470 p (hlen\);)s
cmmi9.300 @sf 300 2561 p 61 c
cmsy9.300 @sf 3 c
t-ita.270 @sf 19 r 114 c
-1(ecompute)m
18(the)m
19(ip)m
19(header)m
18(checksum)m
cmsy9.300 @sf 19 r 3 c
cmmi9.300 @sf 61 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(38])m
@eop
restore
%%Page: 39 41
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
1 /cmsy9.300 @newfont
cmsy9.300 @sf
[<007001C0038007000700070007000700070007000700070007000700070007000E001C00F0001C
000E000700070007000700070007000700070007000700070007000700038001C00070> 16 37 -3 9 19.198] 102 @dc
/Times-Bold /t-bol.270 ReEncodeForTeX /t-bol.270 /t-bol.270 37.499947 TeXPSmakefont def
[<0300030003000300E31C73381FE0078007801FE07338E31C0300030003000300> 16 16 -2 -1 19.198] 3 @dc
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
1 /cmmi9.300 @newfont
cmmi9.300 @sf
[<E000007800001E000007800001E000007800001E000007800001E000007800001E00001E000078
0001E0000780001E0000780001E0000780001E0000780000E00000> 24 22 -3 2 29.864] 62 @dc
cmsy9.300 @sf
[<FFFFFEFFFFFE> 24 2 -3 -8 29.864] 0 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
[<F0001C000E000700070007000700070007000700070007000700070007000700038001C0007001
C0038007000700070007000700070007000700070007000700070007000E001C00F000> 16 37 -3 9 19.198] 103 @dc
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0> 8 37 -4 9 10.666] 106 @dc
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
39 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
cmsy9.300 @sf 300 233 p 102 c
t-bol.270 @sf 450 278 p 114 c
(egister)s
18 r 117 c
612 285 p 19 2 ru
631 278 p (short)s
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (bp)s
19 r 61 c
19 r 40 c
t-bol.270 @sf 117 c
881 285 p 19 2 ru
900 278 p (short)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)cp;)s
t-bol.270 @sf 450 324 p (for)s
t-rom.270 @sf 19(\(changes)m
18 r 61 c
19(0;)m
19(hlen)m
cmmi9.300 @sf 19 r 62 c
t-rom.270 @sf 18(0;)m
19(hlen)m
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 61 c
19(2\))m
600 370 p (changes)s
19(+=)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (bp++;)s
450 415 p (changes)s
19 r 61 c
18(\(changes)m
19 r 38 c
19(0xf)m
102 c
102 c
-1(f\))m
18 r 43 c
18(\(changes)m
cmmi9.300 @sf 19 r 62 c
-14 r 62 c
t-rom.270 @sf 18(16\);)m
450 461 p (changes)s
19 r 61 c
18(\(changes)m
19 r 38 c
19(0xf)m
102 c
102 c
-1(f\))m
18 r 43 c
18(\(changes)m
cmmi9.300 @sf 19 r 62 c
-14 r 62 c
t-rom.270 @sf 18(16\);)m
t-rom.180 @sf 501(140)m
t-rom.270 @sf 450 507 p (\(\()s
t-bol.270 @sf (struct)s
t-rom.270 @sf 19(ip)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (\)cp\))s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -10 r 62 c
t-rom.270 @sf (ip)s
792 513 p 19 2 ru
811 507 p (sum)s
18 r 61 c
19 r 126 c
19(changes;)m
cmsy9.300 @sf 300 552 p 103 c
t-bol.270 @sf 300 598 p 114 c
(eturn)s
t-rom.270 @sf 18(\(cp\);)m
150 689 p (bad:)s
300 735 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (\015ags)s
cmsy9.300 @sf 18 r 106 c
t-rom.270 @sf 61 c
19(SLF)m
636 742 p 19 2 ru
655 735 p 84 c
(OSS;)s
t-bol.270 @sf 300 781 p 114 c
(eturn)s
t-rom.270 @sf 18(\(\()m
t-bol.270 @sf 117 c
468 787 p 19 2 ru
487 781 p (char)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)0\);)s
cmsy9.300 @sf 150 826 p 103 c
t-bol.360 @sf 150 1022 p (A.4)s
50(Initialization)m
t-rom.330 @sf 150 1122 p (This)s
12(routine)m
12(initializes)m
12(the)m
12(state)m
12(structure)m
12(for)m
12(both)m
12(the)m
12(transmit)m
12(and)m
12(receive)m
12(halves)m
12(of)m
12(some)m
150 1178 p (serial)s
11(line.)m
18(It)m
11(must)m
12(be)m
11(called)m
11(each)m
12(time)m
11(the)m
12(line)m
11(is)m
12(brought)m
11(up.)m
t-bol.270 @sf 150 1255 p (void)s
t-rom.270 @sf 150 1301 p (sl)s
175 1307 p 19 2 ru
194 1301 p (compress)s
335 1307 p 19 2 ru
354 1301 p (init\(comp\))s
t-bol.270 @sf 300 1346 p (struct)s
t-rom.270 @sf 19(slcompress)m
cmsy9.300 @sf 18 r 3 c
t-rom.270 @sf (comp;)s
cmsy9.300 @sf 150 1392 p 102 c
t-bol.270 @sf 300 1438 p 114 c
(egister)s
18 r 117 c
462 1444 p 19 2 ru
481 1438 p (int)s
t-rom.270 @sf 18(i;)m
t-bol.270 @sf 300 1483 p 114 c
(egister)s
18(struct)m
t-rom.270 @sf 19(cstate)m
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (tstate)s
18 r 61 c
19(comp)m
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (tstate;)s
300 1575 p (bzero\(\()s
t-bol.270 @sf (char)s
cmsy9.300 @sf 19 r 3 c
t-rom.270 @sf (\)comp,)s
t-bol.270 @sf 18(sizeof)m
t-rom.270 @sf 40 c
cmsy9.300 @sf 3 c
t-rom.270 @sf (comp\)\);)s
t-bol.270 @sf 300 1620 p (for)s
t-rom.270 @sf 19(\(i)m
18 r 61 c
19(MAX)m
536 1627 p 19 2 ru
554 1620 p (ST)s
-2 r 65 c
-4(TES)m
cmsy9.300 @sf 18 r 0 c
t-rom.270 @sf 19(1;)m
19 r 105 c
cmmi9.300 @sf 18 r 62 c
t-rom.270 @sf 19(0;)m
cmsy9.300 @sf 19(\000\000)m
t-rom.270 @sf (i\))s
cmsy9.300 @sf 19 r 102 c
t-rom.270 @sf 450 1666 p (tstate[i].cs)s
605 1673 p 19 2 ru
624 1666 p (id)s
19 r 61 c
18(i;)m
t-rom.180 @sf 1043(10)m
t-rom.270 @sf 450 1712 p (tstate[i].cs)s
605 1718 p 19 2 ru
624 1712 p (next)s
19 r 61 c
18(&tstate[i)m
cmsy9.300 @sf 19 r 0 c
t-rom.270 @sf 19(1];)m
cmsy9.300 @sf 300 1757 p 103 c
t-rom.270 @sf 300 1803 p (tstate[0].cs)s
463 1810 p 19 2 ru
482 1803 p (next)s
19 r 61 c
19(&tstate[MAX)m
814 1810 p 19 2 ru
833 1803 p (ST)s
-2 r 65 c
-5(TES)m
cmsy9.300 @sf 18 r 0 c
t-rom.270 @sf 19(1];)m
300 1849 p (tstate[0].cs)s
463 1855 p 19 2 ru
482 1849 p (id)s
19 r 61 c
19(0;)m
300 1894 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
483 1901 p 19 2 ru
502 1894 p (cs)s
19 r 61 c
19(&tstate[0];)m
300 1940 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
483 1947 p 19 2 ru
502 1940 p (recv)s
19 r 61 c
19(255;)m
300 1986 p (comp)s
cmsy9.300 @sf 0 c
cmmi9.300 @sf -11 r 62 c
t-rom.270 @sf (last)s
483 1992 p 19 2 ru
502 1986 p (xmit)s
19 r 61 c
19(255;)m
cmsy9.300 @sf 150 2031 p 103 c
t-bol.360 @sf 150 2227 p (A.5)s
50(Berkeley)m
12(Unix)m
13(dependencies)m
t-rom.330 @sf 150 2327 p (Note:)s
20(The)m
12(following)m
13(is)m
12(of)m
13(interest)m
13(only)m
12(if)m
13(you)m
13(are)m
12(trying)m
13(to)m
13(bring)m
12(the)m
13(sample)m
13(code)m
12(up)m
13(on)m
12 r 97 c
150 2383 p (system)s
11(that)m
12(is)m
11(not)m
12(derived)m
11(from)m
12(4BSD)m
11(\(Berkeley)m
12(Unix\).)m
221 2449 p (The)s
15(code)m
16(uses)m
16(the)m
16(normal)m
16(Berkeley)m
16(Unix)m
15(header)m
16(\014les)m
16(\(from)m
16(/usr/include/netinet\))m
16(for)m
150 2506 p (de\014nitions)s
14(of)m
15(the)m
14(structure)m
14(of)m
14(IP)m
15(and)m
14(TCP)m
14(headers.)m
26(The)m
14(structure)m
14(tags)m
15(tend)m
14(to)m
14(follow)m
15(the)m
150 2562 p (protocol)s
14(RFCs)m
14(closely)m
15(and)m
14(should)m
14(be)m
14(obvious)m
14(even)m
14(if)m
15(you)m
14(do)m
14(not)m
14(have)m
14(access)m
14(to)m
15 r 97 c
14(4BSD)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(39])m
@eop
restore
%%Page: 40 42
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.330 ReEncodeForTeX /t-bol.330 /t-bol.330 45.833249 TeXPSmakefont def
1 /cmsy10.329 @newfont
cmsy10.329 @sf
[<000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C003
8007001E00F8001E000700038001C001C001C001C001C001C001C001C001C001C001C001C001C0
01C001C000E000600038000F> 16 45 -3 11 22.727] 102 @dc
[<01800180018001800180C183F18F399C0FF003C003C00FF0399CF18FC183018001800180018001
80> 16 20 -3 -1 22.727] 3 @dc
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
00038001800180018001C000C000C000E000600060007000300030003800180018001C000C000C
000E00060006000700030003> 16 45 -3 11 22.727] 61 @dc
cmsy10.329 @sf
[<F8001E000700038001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C000
E000600038000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001C001C0
01C001C0038007001E00F800> 16 45 -3 11 22.727] 103 @dc
[<FFFFFFC0FFFFFFC0> 32 2 -4 -10 35.353] 0 @dc
cmmi10.329 @sf
[<E0000000780000001E0000000780000001E0000000780000001C0000000F00000003C0000000F0
0000003C0000000F00000003C0000003C000000F0000003C000000F0000003C000000F0000001C
00000078000001E00000078000001E00000078000000E0000000> 32 26 -4 2 35.353] 62 @dc
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
40 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 150 233 p (system.)s
t-rom.240 @sf 292 216 p (47)s
t-rom.330 @sf 221 295 p (The)s
10(macro)m
t-ita.330 @sf 10(BCOPY\(sr)m
-1(c,)m
9(dst,)m
10(amt\))m
t-rom.330 @sf 10(is)m
10(invoked)m
10(to)m
10(copy)m
t-ita.330 @sf 10(amt)m
t-rom.330 @sf 10(bytes)m
10(from)m
t-ita.330 @sf 10(sr)m
99 c
t-rom.330 @sf 9(to)m
t-ita.330 @sf 10(dst)m
t-rom.330 @sf 46 c
16(In)m
10(BSD,)m
150 351 p (it)s
11(translates)m
12(into)m
11 r 97 c
12(call)m
11(to)m
t-ita.330 @sf 12(bcopy)m
t-rom.330 @sf 46 c
17(If)m
11(you)m
12(have)m
11(the)m
11(misfortune)m
12(to)m
11(be)m
12(running)m
11(System-V)m
12(Unix,)m
150 408 p (it)s
13(can)m
12(be)m
13(translated)m
13(into)m
12 r 97 c
13(call)m
13(to)m
t-ita.330 @sf 13(memcpy)m
t-rom.330 @sf 46 c
21(The)m
12(macro)m
t-ita.330 @sf 13(OVBCOPY\(sr)m
-1(c,)m
12(dst,)m
13(amt\))m
t-rom.330 @sf 13(is)m
13(used)m
12(to)m
150 464 p (copy)s
13(when)m
t-ita.330 @sf 13(sr)m
99 c
t-rom.330 @sf 12(and)m
t-ita.330 @sf 13(dst)m
t-rom.330 @sf 13(overlap)m
14(\(i.e.,)m
13(when)m
14(doing)m
13(the)m
13(4-byte)m
13(alignment)m
14(copy\).)m
22(In)m
13(the)m
13(BSD)m
150 521 p (kernel,)s
12(it)m
11(translates)m
12(into)m
12 r 97 c
11(call)m
12(to)m
t-ita.330 @sf 12(ovbcopy)m
t-rom.330 @sf 46 c
18(Since)m
11 r 65 c
-4(T&T)m
11(botched)m
11(the)m
12(de\014nition)m
12(of)m
t-ita.330 @sf 11(memcpy)m
t-rom.330 @sf 44 c
150 577 p (this)s
11(should)m
12(probably)m
11(translate)m
12(into)m
11 r 97 c
12(copy)m
11(loop)m
12(under)m
11(System-V)m
-5 r 46 c
221 640 p (The)s
15(macro)m
t-ita.330 @sf 16(BCMP\(sr)m
-1(c,)m
16(dst,)m
16(amt\))m
t-rom.330 @sf 16(is)m
16(invoked)m
15(to)m
16(compare)m
t-ita.330 @sf 15(amt)m
t-rom.330 @sf 16(bytes)m
16(of)m
t-ita.330 @sf 15(sr)m
-1 r 99 c
t-rom.330 @sf 15(and)m
t-ita.330 @sf 16(dst)m
t-rom.330 @sf 15(for)m
150 696 p (equality)s
-2 r 46 c
19(In)m
12(BSD,)m
12(it)m
12(translates)m
13(into)m
12 r 97 c
12(call)m
12(to)m
t-ita.330 @sf 13(bcmp)m
t-rom.330 @sf 46 c
19(In)m
12(System-V)m
-4 r 44 c
11(it)m
12(can)m
12(be)m
13(translated)m
12(into)m
12 r 97 c
150 752 p (call)s
14(to)m
t-ita.330 @sf 14(memcmp)m
t-rom.330 @sf 13(or)m
14(you)m
14(can)m
14(write)m
13 r 97 c
14(routine)m
14(to)m
14(do)m
14(the)m
13(compare.)m
24(The)m
14(routine)m
14(should)m
14(return)m
150 809 p (zero)s
11(if)m
12(all)m
11(bytes)m
12(of)m
t-ita.330 @sf 11(sr)m
99 c
t-rom.330 @sf 10(and)m
t-ita.330 @sf 12(dst)m
t-rom.330 @sf 11(are)m
11(equal)m
12(and)m
11(non-zero)m
12(otherwise.)m
221 871 p (The)s
11(routine)m
t-ita.330 @sf 12(ntohl\(dat\))m
t-rom.330 @sf 11(converts)m
12(\(4)m
11(byte\))m
12(long)m
t-ita.330 @sf 11(dat)m
t-rom.330 @sf 12(from)m
11(network)m
12(byte)m
11(order)m
12(to)m
11(host)m
12(byte)m
150 928 p (order)s
-2 r 46 c
17(On)m
11 r 97 c
12(reasonable)m
11(cpu)m
11(this)m
12(can)m
11(be)m
12(the)m
11(no-op)m
12(macro:)m
t-bol.330 @sf 760 1030 p (#de\014ne)s
t-rom.330 @sf 11(ntohl\(dat\))m
12(\(dat\))m
150 1132 p (On)s
13 r 97 c
13 r 86 c
-4(ax)m
11(or)m
13(IBM)m
13(PC)m
13(\(or)m
12(anything)m
13(with)m
13(Intel)m
13(byte)m
13(order\),)m
13(you)m
13(will)m
12(have)m
13(to)m
13(de\014ne)m
13 r 97 c
13(macro)m
150 1188 p (or)s
11(routine)m
12(to)m
11(rearrange)m
12(bytes.)m
221 1251 p (The)s
13(routine)m
t-ita.330 @sf 13(ntohs\(dat\))m
t-rom.330 @sf 13(is)m
12(like)m
t-ita.330 @sf 13(ntohl)m
t-rom.330 @sf 13(but)m
13(converts)m
13(\(2)m
13(byte\))m
13(shorts)m
13(instead)m
13(of)m
13(longs.)m
22(The)m
150 1307 p (routines)s
t-ita.330 @sf 10(htonl\(dat\))m
t-rom.330 @sf 10(and)m
t-ita.330 @sf 10(htons\(dat\))m
t-rom.330 @sf 10(do)m
10(the)m
10(inverse)m
10(transform)m
10(\(host)m
10(to)m
10(network)m
10(byte)m
10(order\))m
10(for)m
150 1364 p (longs)s
11(and)m
12(shorts.)m
221 1426 p 65 c
t-ita.330 @sf 17(struct)m
17(mbuf)m
t-rom.330 @sf 17(is)m
18(used)m
17(in)m
17(the)m
18(call)m
17(to)m
t-ita.330 @sf 17(sl)m
947 1433 p 23 2 ru
973 1426 p (compr)s
(ess)s
1148 1433 p 23 2 ru
1174 1426 p (tcp)s
t-rom.330 @sf 17(because)m
17(that)m
18(routine)m
17(needs)m
17(to)m
150 1482 p (modify)s
11(both)m
10(the)m
11(start)m
11(address)m
10(and)m
11(length)m
10(if)m
11(the)m
11(incoming)m
10(packet)m
11(is)m
11(compressed.)m
16(In)m
11(BSD,)m
11(an)m
150 1539 p (mbuf)s
9(is)m
8(the)m
9(kernel')m
-1 r 115 c
7(buf)m
(fer)s
8(management)m
9(structure.)m
16(If)m
9(other)m
9(systems,)m
9(the)m
9(following)m
9(de\014nition)m
150 1595 p (should)s
11(be)m
12(suf)m
(\014cient:)s
t-bol.330 @sf 401 1691 p (struct)s
t-rom.330 @sf 23(mbuf)m
cmsy10.329 @sf 23 r 102 c
t-bol.330 @sf 584 1748 p 117 c
610 1754 p 23 2 ru
633 1748 p (char)s
cmsy10.329 @sf 46 r 3 c
t-rom.330 @sf 109 c
826 1754 p 23 2 ru
849 1748 p (of)s
(f;)s
cmmi10.329 @sf 36 r 61 c
cmsy10.329 @sf 3 c
t-ita.330 @sf 23(pointer)m
23(to)m
23(start)m
23(of)m
23(data)m
cmsy10.329 @sf 22 r 3 c
cmmi10.329 @sf 61 c
t-bol.330 @sf 584 1804 p (int)s
t-rom.330 @sf 130 r 109 c
803 1811 p 23 2 ru
826 1804 p (len;)s
cmmi10.329 @sf 56 r 61 c
cmsy10.329 @sf 3 c
t-ita.330 @sf 23(length)m
23(of)m
23(data)m
cmsy10.329 @sf 23 r 3 c
cmmi10.329 @sf 61 c
cmsy10.329 @sf 401 1860 p 103 c
t-rom.330 @sf 59 c
t-bol.330 @sf 401 1973 p (#de\014ne)s
t-rom.330 @sf 23(mtod\(m,)m
23(t\))m
23(\(\(t\)\(m)m
cmsy10.329 @sf 0 c
cmmi10.329 @sf -14 r 62 c
t-rom.330 @sf 109 c
996 1980 p 23 2 ru
1018 1973 p (of)s
(f\)\))s
150 2464 p 660 2 ru
t-rom.180 @sf 187 2501 p (47)s
t-rom.270 @sf 217 2516 p (In)s
8(the)m
7(event)m
7(they)m
7(are)m
7(not)m
8(obvious,)m
7(the)m
7(header)m
8(\014les)m
7(\(and)m
7(all)m
7(the)m
7(Berkeley)m
7(networking)m
8(code\))m
7(can)m
7(be)m
7(anonymous)m
150 2562 p (ftp'd)s
9(from)m
10(host)m
9(ucbarpa.berkeley)m
-1(.edu,)m
8(\014les)m
9(pub/4.3/tcp.tar)m
10(and)m
9(pub/4.3/inet.tar)m
-1 r 46 c
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(40])m
@eop
restore
%%Page: 41 43
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-Bold /t-bol.360 ReEncodeForTeX /t-bol.360 /t-bol.360 49.999929 TeXPSmakefont def
1 /cmsy10.300 @newfont
cmsy10.300 @sf
[<FFFFFF80FFFFFF80> 32 2 -3 -9 32.286] 0 @dc
1 /cmmi10.300 @newfont
cmmi10.300 @sf
[<E0000000780000001E0000000780000001E0000000780000001E0000000780000001E000000078
0000001E00000007800000078000001E00000078000001E00000078000001E00000078000001E0
0000078000001E00000078000000E0000000> 32 24 -3 2 32.286] 62 @dc
cmsy10.300 @sf
[<C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0> 8 41 -5 10 11.531] 106 @dc
/Times-Bold /t-bol.300 ReEncodeForTeX /t-bol.300 /t-bol.300 41.666629 TeXPSmakefont def
[<003C00E001C001800380038003800380038003800380038003800380038003800380030007001C
00F0001C00070003000380038003800380038003800380038003800380038003800380018001C0
00E0003C> 16 41 -3 10 20.755] 102 @dc
[<F0001C00070003000380038003800380038003800380038003800380038003800380018001C000
E0003C00E001C00180038003800380038003800380038003800380038003800380038003000700
1C00F000> 16 41 -3 10 20.755] 103 @dc
41 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-bol.420 @sf 150 233 p 66 c
58(Compatibility)m
15(with)m
14(past)m
15(mistakes)m
t-rom.330 @sf 150 344 p (When)s
8(combined)m
9(with)m
8(the)m
9(modern)m
8(PPP)m
9(serial)m
8(line)m
9(protocol[)m
57 c
(],)s
9(the)m
9(use)m
8(of)m
9(header)m
8(compression)m
150 401 p (is)s
12(automatic)m
11(and)m
12(invisible)m
11(to)m
12(the)m
12(user)m
-2 r 46 c
17(Unfortunately)m
-2 r 44 c
10(many)m
12(sites)m
12(have)m
11(existing)m
12(users)m
12(of)m
11(the)m
150 457 p (SLIP)s
19(described)m
18(in)m
19 r 91 c
(12)s
93 c
18(which)m
19(doesn')m
116 c
18(allow)m
18(for)m
19(dif)m
(ferent)s
18(protocol)m
18(types)m
19(to)m
19(distinguish)m
150 514 p (header)s
12(compressed)m
11(packets)m
12(from)m
11(IP)m
12(packets)m
12(or)m
11(for)m
12(version)m
11(numbers)m
12(or)m
11(an)m
12(option)m
12(exchange)m
150 570 p (that)s
11(could)m
12(be)m
11(used)m
12(to)m
11(automatically)m
12(negotiate)m
11(header)m
12(compression.)m
221 634 p (The)s
12(author)m
12(has)m
12(used)m
12(the)m
13(following)m
12(tricks)m
12(to)m
12(allow)m
13(header)m
12(compressed)m
12(SLIP)m
12(to)m
12(interop-)m
150 690 p (erate)s
11(with)m
11(the)m
11(existing)m
11(servers)m
11(and)m
11(clients.)m
17(Note)m
11(that)m
11(these)m
11(are)m
t-ita.330 @sf 11(hacks)m
t-rom.330 @sf 10(for)m
11(compatibility)m
11(with)m
150 747 p (past)s
10(mistakes)m
10(and)m
10(should)m
10(be)m
11(of)m
(fensive)s
9(to)m
10(any)m
10(right)m
10(thinking)m
10(person.)m
17(They)m
10(are)m
10(of)m
(fered)s
10(solely)m
150 803 p (to)s
11(ease)m
12(the)m
11(pain)m
12(of)m
11(running)m
12(SLIP)m
11(while)m
12(users)m
11(wait)m
12(patiently)m
11(for)m
11(vendors)m
12(to)m
11(release)m
12(PPP)m
-4 r 46 c
t-bol.360 @sf 150 940 p (B.1)s
50(Living)m
12(without)m
13 r 97 c
12(framing)m
13(`type')m
12(byte)m
t-rom.330 @sf 150 1035 p (The)s
15(bizarre)m
15(packet)m
15(type)m
15(numbers)m
15(in)m
15(sec.)m
15(A.1)m
15(were)m
15(chosen)m
15(to)m
15(allow)m
15 r 97 c
15(`packet)m
15(type')m
15(to)m
15(be)m
150 1092 p (sent)s
13(on)m
13(lines)m
13(where)m
13(it)m
13(is)m
13(undesirable)m
13(or)m
13(impossible)m
14(to)m
13(add)m
13(an)m
13(explicit)m
13(type)m
13(byte.)m
22(Note)m
13(that)m
150 1148 p (the)s
13(\014rst)m
12(byte)m
13(of)m
13(an)m
13(IP)m
12(packet)m
13(always)m
13(contains)m
13(\\4")m
12(\(the)m
13(IP)m
13(protocol)m
13(version\))m
12(in)m
13(the)m
13(top)m
13(four)m
150 1205 p (bits.)s
17(And)m
11(that)m
11(the)m
11(most)m
11(signi\014cant)m
11(bit)m
11(of)m
10(the)m
11(\014rst)m
11(byte)m
11(of)m
11(the)m
11(compressed)m
11(header)m
11(is)m
11(ignored.)m
150 1261 p (Using)s
12(the)m
13(packet)m
13(types)m
12(in)m
13(sec.)m
12(A.1,)m
13(the)m
12(type)m
13(can)m
12(be)m
13(encoded)m
12(in)m
13(the)m
12(most)m
13(signi\014cant)m
12(bits)m
13(of)m
150 1318 p (the)s
11(outgoing)m
12(packet)m
11(using)m
12(the)m
11(code)m
t-rom.300 @sf 615 1440 p 112 c
cmsy10.300 @sf 0 c
cmmi10.300 @sf -13 r 62 c
t-rom.300 @sf (dat[0])s
cmsy10.300 @sf 22 r 106 c
t-rom.300 @sf 61 c
23(sl)m
895 1447 p 23 2 ru
918 1440 p (compress)s
1075 1447 p 23 2 ru
1098 1440 p (tcp\(p,)s
23(comp\);)m
t-rom.330 @sf 161 1545 p (and)s
12(decoded)m
11(on)m
12(the)m
11(receive)m
12(side)m
11(by)m
t-bol.300 @sf 527 1650 p (if)s
t-rom.300 @sf 23(\(p)m
cmsy10.300 @sf 0 c
cmmi10.300 @sf -12 r 62 c
t-rom.300 @sf (dat[0])s
21 r 38 c
23(0x80\))m
710 1700 p (type)s
23 r 61 c
23(TYPE)m
956 1706 p 23 2 ru
979 1700 p (COMPRESSED)s
1252 1706 p 23 2 ru
1275 1700 p (TCP;)s
t-bol.300 @sf 527 1750 p (else)s
23(if)m
t-rom.300 @sf 23(\(p)m
cmsy10.300 @sf 0 c
cmmi10.300 @sf -13 r 62 c
t-rom.300 @sf (dat[0])s
cmmi10.300 @sf 22 r 62 c
t-rom.300 @sf 61 c
23(0x70\))m
cmsy10.300 @sf 23 r 102 c
t-rom.300 @sf 710 1799 p (type)s
23 r 61 c
23(TYPE)m
956 1806 p 23 2 ru
979 1799 p (UNCOMPRESSED)s
1312 1806 p 23 2 ru
1335 1799 p (TCP;)s
710 1849 p 112 c
cmsy10.300 @sf 0 c
cmmi10.300 @sf -12 r 62 c
t-rom.300 @sf (dat[0])s
22(&=~)m
23(0x30;)m
cmsy10.300 @sf 527 1899 p 103 c
t-bol.300 @sf 23(else)m
t-rom.300 @sf 710 1949 p (type)s
23 r 61 c
23(TYPE)m
956 1956 p 23 2 ru
979 1949 p (IP;)s
527 1999 p (status)s
23 r 61 c
23(sl)m
719 2005 p 23 2 ru
742 1999 p (uncompress)s
941 2005 p 23 2 ru
964 1999 p (tcp\(p,)s
23(type,)m
23(comp\);)m
t-bol.360 @sf 150 2241 p (B.2)s
50(Backwards)m
12(compatible)m
13(SLIP)m
12(servers)m
t-rom.330 @sf 150 2336 p (The)s
11(SLIP)m
11(described)m
12(in)m
11 r 91 c
(12)s
93 c
11(doesn')m
116 c
10(include)m
11(any)m
12(mechanism)m
11(that)m
11(could)m
11(be)m
11(used)m
11(to)m
12(automat-)m
150 2393 p (ically)s
14(negotiate)m
15(header)m
14(compression.)m
25(It)m
15(would)m
14(be)m
14(nice)m
15(to)m
14(allow)m
14(users)m
14(of)m
15(this)m
14(SLIP)m
14(to)m
15(use)m
150 2449 p (header)s
15(compression)m
14(but,)m
16(when)m
14(users)m
15(of)m
14(the)m
15(two)m
15(SLIP)m
14(varients)m
15(share)m
14 r 97 c
15(common)m
14(server)m
44 c
14(it)m
150 2506 p (would)s
16(be)m
16(annoying)m
16(and)m
16(dif)m
(\014cult)s
15(to)m
16(manually)m
16(con\014gure)m
16(both)m
16(ends)m
16(of)m
16(each)m
15(connection)m
16(to)m
150 2562 p (enable)s
11(compression.)m
18(The)m
11(following)m
12(procedure)m
11(can)m
11(be)m
12(used)m
11(to)m
12(avoid)m
11(manual)m
12(con\014guration.)m
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(41])m
@eop
restore
%%Page: 42 44
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
/Times-Italic /t-ita.330 ReEncodeForTeX /t-ita.330 /t-ita.330 45.833249 TeXPSmakefont def
/Times-SmallCaps /t-romsc.330 ReEncodeForTeX /t-romsc.330 /t-romsc.330 45.833249 TeXPSmakefont def
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
/Times-SmallCaps /t-romsc.270 ReEncodeForTeX /t-romsc.270 /t-romsc.270 37.499947 TeXPSmakefont def
/Times-Italic /t-ita.270 ReEncodeForTeX /t-ita.270 /t-ita.270 37.499947 TeXPSmakefont def
42 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 221 233 p (Since)s
17(there)m
18(are)m
18(two)m
17(types)m
18(of)m
18(dial-in)m
17(clients)m
18(\(those)m
18(that)m
17(implement)m
18(compression)m
18(and)m
150 289 p (those)s
9(that)m
10(don')m
(t\))s
8(but)m
10(one)m
9(server)m
9(for)m
10(both)m
9(types,)m
10(it')m
-2 r 115 c
9(clear)m
9(that)m
9(the)m
10(server)m
9(will)m
9(be)m
10(recon\014guring)m
150 346 p (for)s
17(each)m
17(new)m
17(client)m
16(session)m
17(but)m
17(clients)m
17(change)m
17(con\014guration)m
17(seldom)m
17(if)m
17(ever)m
-2 r 46 c
32(If)m
17(manual)m
150 402 p (con\014guration)s
10(has)m
11(to)m
10(be)m
11(done,)m
10(it)m
11(should)m
10(be)m
11(done)m
10(on)m
10(the)m
11(side)m
10(that)m
11(changes)m
10(infrequently)m
11 r 124 c
10(the)m
150 458 p (client.)s
20(This)m
13(suggests)m
12(that)m
13(the)m
12(server)m
13(should)m
12(somehow)m
12(learn)m
13(from)m
12(the)m
13(client)m
12(whether)m
13(to)m
12(use)m
150 515 p (header)s
14(compression.)m
24(Assuming)m
13(symmetry)m
14(\(i.e.,)m
14(if)m
14(compression)m
13(is)m
14(used)m
14(at)m
14(all)m
13(it)m
14(should)m
14(be)m
150 571 p (used)s
9(both)m
9(directions\))m
9(the)m
8(server)m
9(can)m
9(use)m
9(the)m
9(receipt)m
9(of)m
9 r 97 c
8(compressed)m
9(packet)m
9(from)m
9(some)m
9(client)m
150 628 p (to)s
13(indicate)m
14(that)m
13(it)m
14(can)m
13(send)m
13(compressed)m
14(packets)m
13(to)m
13(that)m
14(client.)m
23(This)m
13(leads)m
13(to)m
14(the)m
13(following)m
150 684 p (algorithm:)s
221 742 p (There)s
10(are)m
11(two)m
11(bits)m
11(per)m
10(line)m
11(to)m
11(control)m
11(header)m
10(compression:)m
t-ita.330 @sf 17(allowed)m
t-rom.330 @sf 11(and)m
t-ita.330 @sf 11(on)m
t-rom.330 @sf 46 c
17(If)m
t-ita.330 @sf 10(on)m
t-rom.330 @sf 11(is)m
11(set,)m
150 799 p (compressed)s
13(packets)m
13(are)m
13(sent,)m
13(otherwise)m
13(not.)m
22(If)m
t-ita.330 @sf 12(allowed)m
t-rom.330 @sf 13(is)m
13(set,)m
14(compressed)m
12(packets)m
13(can)m
13(be)m
150 855 p (received)s
12(and,)m
13(if)m
12(an)m
t-romsc.330 @sf 13(uncompressed)m
800 862 p 23 2 ru
826 855 p (tcp)s
t-rom.330 @sf 12(packet)m
13(arrives)m
12(when)m
t-ita.330 @sf 12(on)m
t-rom.330 @sf 13(is)m
12(clear)m
-1 r 44 c
t-ita.330 @sf 12(on)m
t-rom.330 @sf 12(will)m
12(be)m
13(set.)m
t-rom.240 @sf 1761 839 p (48)s
t-rom.330 @sf 150 912 p (If)s
11 r 97 c
12(compressed)m
11(packet)m
12(arrives)m
11(when)m
t-ita.330 @sf 12(allowed)m
t-rom.330 @sf 11(is)m
12(clear)m
-1 r 44 c
10(it)m
12(will)m
11(be)m
12(ignored.)m
221 970 p (Clients)s
8(are)m
8(con\014gured)m
9(with)m
8(both)m
9(bits)m
8(set)m
9 r 40 c
t-ita.330 @sf (allowed)s
t-rom.330 @sf 8(is)m
9(always)m
8(set)m
8(if)m
t-ita.330 @sf 9(on)m
t-rom.330 @sf 8(is)m
9(set\))m
8(and)m
9(the)m
8(server)m
150 1026 p (starts)s
15(each)m
15(session)m
16(with)m
t-ita.330 @sf 15(allowed)m
t-rom.330 @sf 15(set)m
15(and)m
t-ita.330 @sf 15(on)m
t-rom.330 @sf 15(clear)m
-1 r 46 c
27(The)m
15(\014rst)m
16(compressed)m
15(packet)m
15(from)m
15(the)m
150 1083 p (client)s
11(\(which)m
12(must)m
11(be)m
12 r 97 c
t-romsc.330 @sf 11(uncompressed)m
886 1089 p 23 2 ru
912 1083 p (tcp)s
t-rom.330 @sf 11(packet\))m
12(turns)m
11(on)m
11(compression)m
12(for)m
11(the)m
12(server)m
-2 r 46 c
t-bol.420 @sf 150 1227 p 67 c
58(Mor)m
101 c
14(aggr)m
(essive)s
13(compr)m
(ession)s
t-rom.330 @sf 150 1332 p (As)s
13(noted)m
12(in)m
13(sec.)m
13(3.2.2,)m
13(easily)m
12(detected)m
13(patterns)m
12(exist)m
13(in)m
13(the)m
12(stream)m
13(of)m
13(compressed)m
12(headers,)m
150 1389 p (indicating)s
11(that)m
12(more)m
11(compression)m
12(could)m
11(be)m
12(done.)m
17 r 87 c
-3(ould)m
11(this)m
11(be)m
12(worthwhile?)m
221 1447 p (The)s
11(average)m
12(compressed)m
12(datagram)m
12(has)m
12(only)m
12(seven)m
12(bits)m
12(of)m
11(header)m
-1 r 46 c
t-rom.240 @sf 1414 1430 p (49)s
t-rom.330 @sf 1471 1447 p (The)s
12(framing)m
11(must)m
150 1503 p (be)s
11(at)m
12(least)m
11(one)m
11(bit)m
11(\(to)m
12(encode)m
11(the)m
11(`type'\))m
11(and)m
12(will)m
11(probably)m
11(be)m
11(more)m
12(like)m
11(two)m
11(to)m
11(three)m
12(bytes.)m
150 1560 p (In)s
15(most)m
16(interesting)m
15(cases)m
15(there)m
16(will)m
15(be)m
16(at)m
15(least)m
15(one)m
16(byte)m
15(of)m
15(data.)m
29(Finally)m
-2 r 44 c
16(the)m
15(end-to-end)m
150 1616 p (check|the)s
11(TCP)m
12(checksum|must)m
11(be)m
12(passed)m
11(through)m
12(unmodi\014ed.)m
t-rom.240 @sf 1361 1600 p (50)s
t-rom.330 @sf 221 1674 p (The)s
15(framing,)m
17(data)m
16(and)m
16(checksum)m
15(will)m
16(remain)m
16(even)m
16(if)m
16(the)m
15(header)m
16(is)m
16(completely)m
16(com-)m
150 1731 p (pressed)s
12(out)m
11(so)m
12(the)m
12(change)m
11(in)m
12(average)m
12(packet)m
12(size)m
11(is,)m
12(at)m
12(best,)m
11(four)m
12(bytes)m
12(down)m
12(to)m
11(three)m
12(bytes)m
150 1787 p (and)s
13(one)m
13(bit)m
13 r 124 c
14(roughly)m
13 r 97 c
13(25%)m
13(improvement)m
13(in)m
13(delay)m
-2 r 46 c
t-rom.240 @sf 1133 1771 p (51)s
t-rom.330 @sf 1194 1787 p (While)s
13(this)m
13(may)m
13(seem)m
13(signi\014cant,)m
150 1843 p (on)s
13 r 97 c
13(2400)m
13(bps)m
14(line)m
13(it)m
13(means)m
13(that)m
13(typing)m
13(echo)m
14(response)m
13(takes)m
13(25)m
13(rather)m
13(than)m
13(29)m
13(ms.)m
23(At)m
13(the)m
150 1900 p (present)s
11(stage)m
12(of)m
11(human)m
12(evolution,)m
11(this)m
12(dif)m
(ference)s
10(is)m
12(not)m
11(detectable.)m
150 1933 p 660 2 ru
t-rom.180 @sf 187 1970 p (48)s
t-rom.270 @sf 217 1986 p (Since)s
9 r 91 c
(12)s
93 c
8(framing)m
8(doesn')m
116 c
7(include)m
8(error)m
8(detection,)m
8(one)m
8(should)m
8(be)m
8(careful)m
8(not)m
8(to)m
8(`false)m
8(trigger)m
2 r 39 c
8(compression)m
150 2031 p (on)s
8(the)m
8(server)m
-1 r 46 c
12(The)m
t-romsc.270 @sf 8(uncompressed)m
671 2038 p 19 2 ru
693 2031 p (tcp)s
t-rom.270 @sf 8(packet)m
8(should)m
8(checked)m
8(for)m
8(consistency)m
8(\(e.g.,)m
8(IP)m
8(checksum)m
8(correctness\))m
150 2077 p (before)s
7(compression)m
7(is)m
8(enabled.)m
13(Arrival)m
7(of)m
t-romsc.270 @sf 7(compressed)m
975 2084 p 19 2 ru
997 2077 p (tcp)s
t-rom.270 @sf 7(packets)m
7(should)m
7(not)m
8(be)m
7(used)m
7(to)m
7(enable)m
7(compression.)m
t-rom.180 @sf 187 2116 p (49)s
t-rom.270 @sf 217 2132 p 84 c
-1(ests)m
8(run)m
8(with)m
9(several)m
9(million)m
9(packets)m
8(from)m
9 r 97 c
9(mixed)m
8(traf)m
(\014c)s
8(load)m
9(\(i.e.,)m
9(statistics)m
9(kept)m
8(on)m
9 r 97 c
9(year)m
1 r 39 c
-1 r 115 c
8(traf)m
(\014c)s
8(from)m
150 2178 p (my)s
9(home)m
9(to)m
8(work\))m
9(show)m
9(that)m
9(80%)m
9(of)m
9(packets)m
8(use)m
9(one)m
9(of)m
9(the)m
9(two)m
9(special)m
8(encodings)m
9(and,)m
9(thus,)m
9(the)m
9(only)m
9(header)m
9(is)m
150 2223 p (the)s
9(change)m
10(mask.)m
t-rom.180 @sf 187 2263 p (50)s
t-rom.270 @sf 217 2279 p (If)s
11(someone)m
11(tries)m
10(to)m
11(sell)m
10(you)m
11 r 97 c
10(scheme)m
11(that)m
10(compresses)m
11(the)m
10(TCP)m
11(checksum)m
10(\\Just)m
11(say)m
10(no".)m
18(Some)m
10(poor)m
11(fool)m
150 2324 p (has)s
10(yet)m
11(to)m
10(have)m
10(the)m
11(sad)m
10(experience)m
10(that)m
10(reveals)m
11(the)m
t-ita.270 @sf 10(end-to-end)m
10(ar)m
(gument)s
t-rom.270 @sf 9(is)m
11(gospel)m
10(truth.)m
17 r 87 c
-2(orse,)m
9(since)m
11(the)m
10(fool)m
150 2370 p (is)s
10(subverting)m
t-ita.270 @sf 11(your)m
t-rom.270 @sf 10(end-to-end)m
10(error)m
11(check,)m
t-ita.270 @sf 10(you)m
t-rom.270 @sf 11(may)m
10(pay)m
11(the)m
10(price)m
10(for)m
11(this)m
10(education)m
10(and)m
11(they)m
10(will)m
10(be)m
11(none)m
10(the)m
150 2416 p (wiser)s
-1 r 46 c
13(What)m
9(does)m
10(it)m
9(pro\014t)m
9 r 97 c
10(man)m
9(to)m
10(gain)m
9(two)m
9(byte)m
10(times)m
9(of)m
9(delay)m
10(and)m
9(lose)m
10(peace)m
9(of)m
9(mind?)m
t-rom.180 @sf 187 2455 p (51)s
t-rom.270 @sf 217 2471 p (Note)s
14(again)m
14(that)m
13(we)m
14(must)m
13(be)m
14(concerned)m
13(about)m
14(interactive)m
13(delay)m
14(to)m
13(be)m
14(making)m
13(this)m
14(ar)m
(gument:)s
21(Bulk)m
14(data)m
150 2516 p (transfer)s
9(performance)m
10(will)m
9(be)m
10(dominated)m
9(by)m
10(the)m
9(time)m
9(to)m
10(send)m
9(the)m
10(data)m
9(and)m
10(the)m
9(dif)m
(ference)s
9(between)m
9(three)m
10(and)m
9(four)m
150 2562 p (byte)s
9(headers)m
10(on)m
9 r 97 c
9(datagram)m
10(containing)m
9(tens)m
10(or)m
9(hundreds)m
9(of)m
10(data)m
9(bytes)m
9(is,)m
10(practically)m
-2 r 44 c
9(no)m
9(dif)m
(ference.)s
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(42])m
@eop
restore
%%Page: 43 45
save
/Times-SmallCaps /Times-Roman SmallCapsFont
/Times-SmallCaps /t-romsc.300 ReEncodeForTeX /t-romsc.300 /t-romsc.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.300 ReEncodeForTeX /t-rom.300 /t-rom.300 41.666629 TeXPSmakefont def
/Times-Roman /t-rom.330 ReEncodeForTeX /t-rom.330 /t-rom.330 45.833249 TeXPSmakefont def
1 /cmmi10.329 @newfont
cmmi10.329 @sf
[<000001C00000078000001E00000078000001E00000078000000E0000003C000000F0000003C000
000F0000003C000000F0000000F00000003C0000000F00000003C0000000F00000003C0000000E
0000000780000001E0000000780000001E0000000780000001C0> 32 26 -4 2 35.353] 60 @dc
[<0F0780308C40705C40703C20F01C20F01C20F00E10F00E00F00E00F00E00780700780700780700
3807003C03801C03800E03800707800389C000F180> 24 20 -2 0 24.026] 97 @dc
[<C000C000E000600060007000300030003800180018001C000C000C000E00060006000700030003
00038001800180018001C000C000C000E000600060007000300030003800180018001C000C000C
000E00060006000700030003> 16 45 -3 11 22.727] 61 @dc
/Times-Roman /t-rom.240 ReEncodeForTeX /t-rom.240 /t-rom.240 33.333265 TeXPSmakefont def
/Times-Bold /t-bol.420 ReEncodeForTeX /t-bol.420 /t-bol.420 58.333229 TeXPSmakefont def
/Times-Roman /t-rom.180 ReEncodeForTeX /t-rom.180 /t-rom.180 24.999965 TeXPSmakefont def
/Times-Roman /t-rom.270 ReEncodeForTeX /t-rom.270 /t-rom.270 37.499947 TeXPSmakefont def
43 @bop1
t-romsc.300 @sf 150 50 p (rfc)s
10 r 49 c
(144)s
t-rom.300 @sf 418(Compressing)m
10(TCP/IP)m
10(Headers)m
330(February)m
10(1990)m
t-rom.330 @sf 221 233 p (However)s
-1 r 44 c
16(the)m
16(author)m
17(sheepishly)m
16(admits)m
16(to)m
16(perverting)m
17(this)m
16(compression)m
16(scheme)m
16(for)m
17 r 97 c
150 289 p (very)s
17(special)m
16(case)m
17(data-acquisition)m
16(problem:)m
27 r 87 c
-2 r 101 c
15(had)m
17(an)m
16(instrument)m
17(and)m
16(control)m
17(package)m
150 346 p (\015oating)s
15(at)m
16(200KV)m
-5 r 44 c
14(communicating)m
15(with)m
16(ground)m
15(level)m
15(via)m
15 r 97 c
16(telemetry)m
15(system.)m
29(For)m
15(many)m
150 402 p (reasons)s
11(\(multiplexed)m
10(communication,)m
11(pipelining,)m
11(error)m
10(recovery)m
-2 r 44 c
10(availability)m
11(of)m
11(well)m
10(tested)m
150 458 p (implementations,)s
15(etc.\),)m
16(it)m
14(was)m
15(convenient)m
14(to)m
15(talk)m
15(to)m
14(the)m
15(package)m
14(using)m
15(TCP/IP)m
-4 r 46 c
13(However)m
-1 r 44 c
150 515 p (since)s
18(the)m
18(primary)m
18(use)m
18(of)m
18(the)m
18(telemetry)m
18(link)m
18(was)m
18(data)m
18(acquisition,)m
20(it)m
18(was)m
18(designed)m
18(with)m
150 571 p (an)s
16(uplink)m
16(channel)m
16(capacity)m
cmmi10.329 @sf 20 r 60 c
t-rom.330 @sf 3(0.5%)m
16(the)m
16(downlink')m
-2(s.)m
31 r 84 c
-3 r 111 c
15(meet)m
17(application)m
16(delay)m
16(budgets,)m
150 628 p (data)s
15(packets)m
14(were)m
15(100)m
15(bytes)m
14(and,)m
16(since)m
14(TCP)m
15(acks)m
15(every)m
14(other)m
15(packet,)m
15(the)m
15(relative)m
15(uplink)m
150 684 p (bandwidth)s
14(for)m
14(acks)m
14(is)m
cmmi10.329 @sf 17(a=)m
t-rom.330 @sf (200)s
17(where)m
cmmi10.329 @sf 17 r 97 c
t-rom.330 @sf 17(is)m
14(the)m
14(total)m
14(size)m
14(of)m
14(ack)m
14(packets.)m
25(Using)m
14(the)m
14(scheme)m
150 741 p (in)s
14(this)m
15(paper)m
-1 r 44 c
14(the)m
14(smallest)m
14(ack)m
14(is)m
15(four)m
14(bytes)m
14(which)m
14(would)m
15(imply)m
14(an)m
14(uplink)m
14(bandwidth)m
15(2%)m
150 797 p (of)s
15(the)m
15(downlink.)m
28(This)m
15(wasn')m
116 c
14(possible)m
15(so)m
16(we)m
15(used)m
15(the)m
15(scheme)m
15(described)m
15(in)m
15(footnote)m
15(14:)m
150 854 p (If)s
18(the)m
18(\014rst)m
18(bit)m
18(of)m
18(the)m
17(frame)m
18(was)m
18(one,)m
20(it)m
18(meant)m
18(\\same)m
17(compressed)m
18(header)m
18(as)m
18(last)m
18(time".)m
150 910 p (Otherwise)s
12(the)m
11(next)m
12(two)m
11(bits)m
12(gave)m
11(one)m
12(of)m
12(the)m
11(types)m
12(described)m
11(in)m
12(sec.)m
11(3.2.)m
18(Since)m
12(the)m
11(link)m
12(had)m
150 966 p (excellent)s
13(forward)m
14(error)m
13(correction)m
14(and)m
13(traf)m
(\014c)s
13(made)m
13(only)m
14 r 97 c
13(single)m
14(hop,)m
14(the)m
13(TCP)m
14(checksum)m
150 1023 p (was)s
13(compressed)m
12(out)m
13(\(blush!\))m
12(of)m
13(the)m
12(\\same)m
13(header)m
2 r 34 c
12(packet)m
13(types)m
t-rom.240 @sf 1327 1006 p (52)s
t-rom.330 @sf 1378 1023 p (so)s
13(the)m
12(total)m
13(header)m
12(size)m
150 1079 p (for)s
12(these)m
11(packets)m
12(was)m
11(one)m
12(bit.)m
17(Over)m
12(several)m
12(months)m
11(of)m
12(operation,)m
11(more)m
12(than)m
12(99%)m
11(of)m
12(the)m
11(40)m
150 1136 p (byte)s
11(TCP/IP)m
12(headers)m
11(were)m
12(compressed)m
11(down)m
12(to)m
11(one)m
12(bit.)m
t-rom.240 @sf 1170 1119 p (53)s
t-bol.420 @sf 150 1288 p 68 c
58(Security)m
15(Considerations)m
t-rom.330 @sf 150 1398 p (Security)s
11(considerations)m
12(are)m
11(not)m
12(addressed)m
11(in)m
12(this)m
11(memo.)m
t-bol.420 @sf 150 1550 p 69 c
58(Author)m
1 r 39 c
-1 r 115 c
14(addr)m
(ess)s
t-rom.330 @sf 238 1648 p (Address:)s
50 r 86 c
-4(an)m
10(Jacobson)m
451 1705 p (Real)s
11 r 84 c
(ime)s
10(Systems)m
12(Group)m
451 1761 p (Mail)s
11(Stop)m
12(46A)m
451 1818 p (Lawrence)s
11(Berkeley)m
12(Laboratory)m
451 1874 p (Berkeley)s
-2 r 44 c
10(CA)m
12(94720)m
238 1947 p (Phone:)s
85(Use)m
12(email)m
11(\(author)m
12(ignores)m
11(his)m
12(phone\))m
238 2020 p (EMail:)s
85(van@helios.ee.lbl.gov)m
150 2318 p 660 2 ru
t-rom.180 @sf 187 2354 p (52)s
t-rom.270 @sf 217 2370 p (The)s
7(checksum)m
7(was)m
6(re-generated)m
7(in)m
6(the)m
7(decompressor)m
6(and,)m
8(of)m
6(course,)m
7(the)m
7(\\toss")m
6(logic)m
7(was)m
7(made)m
6(considerably)m
150 2416 p (more)s
9(aggressive)m
10(to)m
9(prevent)m
9(error)m
10(propagation.)m
t-rom.180 @sf 187 2455 p (53)s
t-rom.270 @sf 217 2471 p 87 c
-2 r 101 c
6(have)m
6(heard)m
7(the)m
6(suggestion)m
7(that)m
6(\\real-time")m
6(needs)m
7(require)m
6(abandoning)m
7(TCP/IP)m
6(in)m
7(favor)m
6(of)m
6 r 97 c
7(\\light-weight")m
150 2516 p (protocol)s
11(with)m
11(smaller)m
12(headers.)m
19(It)m
11(is)m
12(dif)m
(\014cult)s
10(to)m
11(envision)m
12 r 97 c
11(protocol)m
11(that)m
11(averages)m
12(less)m
11(than)m
11(one)m
11(header)m
11(bit)m
12(per)m
150 2562 p (packet.)s
t-rom.300 @sf 150 2724 p (Jacobson)s
1336([Page)m
11(43])m
@eop
restore
%%Trailer
@end
%%Pages: 45
%%DocumentFonts: Times-Roman
%%+ Times-Bold
%%+ Times-Italic
%%+ Helvetica
%%+ Courier
%%EOF